PCCar.ru - Ваш автомобильный компьютер

PCCar.ru - Ваш автомобильный компьютер (http://pccar.ru/index.php)
-   Навигация (http://pccar.ru/forumdisplay.php?f=176)
-   -   USB GPS for Android (http://pccar.ru/showthread.php?t=18871)

Gennik 13.02.2023 15:40

t8-p1:/data/data/com.termux/files/home # lsof | grep -i tty
ueventd 1085 root 5u CHR 250,3 0t0 1105 /dev/__ttyS3__
gnss@1.0- 1693 gps 7u CHR 250,0 0t0 12324 /dev/ttyS0
gocsdk 2666 root 7u CHR 250,2 0t0 104 /dev/ttyS2.tmp
sh 15694 root 10u CHR 5,0 0t0 11987 /dev/tty
t8-p1:/data/data/com.termux/files/home # ls -l /sistem/lib/hw/gps*
ls: /sistem/lib/hw/gps*: No such file or directory
1|t8-p1:/data/data/com.termux/files/home # ls -l /sistem/lib64/hw/gps*
ls: /sistem/lib64/hw/gps*: No such file or directory
1|t8-p1:/data/data/com.termux/files/home # ls -l /vendor/lib/hw/gps*
ls: /vendor/lib/hw/gps*: No such file or directory
1|t8-p1:/data/data/com.termux/files/home # ls -l /vendor/lib64/hw/gps*
ls: /vendor/lib64/hw/gps*: No such file or directory
1|t8-p1:/data/data/com.termux/files/home #

ABCh 13.02.2023 15:52

Ошибочка в имени /system а не /sistem, повторите для этих каталогов,
gps-приемник сидит на /dev/ttyS0
можете убедиться
Код:

su
stty -F /dev/ttyS0
cat /dev/ttyS0

должен пойти поток nmea-сообщений.

Gennik 13.02.2023 16:19

Да поток идёт
t8-p1:/data/data/com.termux/files/home # ls -l /system/lib/hw/gps*
-rw-r--r-- 1 root root 20624 2018-10-09 09:39 /system/lib/hw/gps.default.so
t8-p1:/data/data/com.termux/files/home # ls -l /system/lib64/hw/gps*
ls: /system/lib64/hw/gps*: No such file or directory
1|t8-p1:/data/data/com.termux/files/home #

ABCh 13.02.2023 16:37

Итак, мы имеем 32-битную архитектуру, но лучше уточнить командой
Код:

uname -a
и последний шанс обнаружить настройки gps-приемника
Код:

getprop | grep -i gps
getprop | grep ttyS0

Какой usb gps-приемник планируете подключать? Пока я вижу, как наиболее удобный вариант, это VK-162 или VK172 от u-blox, при условии, что он определится, как ttyACM0, и замену библиотеки gps.default.so, как это описано в этой теме.

Gennik 13.02.2023 16:48

t8-p1:/data/data/com.termux/files/home # uname -a
Linux localhost 4.4.89 #461 SMP PREEMPT Thu Jan 10 10:31:07 CST 2019 armv7l
t8-p1:/data/data/com.termux/files/home #

Gennik 13.02.2023 17:02

$ su
t8-p1:/data/data/com.termux/files/home # ger
/system/bin/sh: ger: not found
127|t8-p1:/data/data/com.termux/files/home # su
t8-p1:/data/data/com.termux/files/home # getprop | grep -i gps
1|t8-p1:/data/data/com.termux/files/home # getprop | grep ttyS0
1|t8-p1:/data/data/com.termux/files/home #
Тут я понимаю не фига не нашлось! А если купить к примеру vk 162 шанс что заведётся есть?

ABCh 13.02.2023 19:28

VK-162 поддерживается модулем ядра acm. Если ядро содержит файл конфигурации, что можно проверить
Код:

su
ls -l /proc/config.gz

если есть, то смотрим
Код:

zcat /proc/config.gz | grep -i acm
если видим CONFIG_USB_ACM=y, то нужный модуль есть.
Если файл /proc/config.gz отсутствует, то можно проверить только опытным путем. Например, подключить Arduino Pro Micro или Arduino Leonardo к порту usb (или другие модели на чипе 32u4, прочие модели Arduino не подойдут). Должен появиться файл /dev/ttyACM0

Gennik 13.02.2023 20:19

$ su
t8-p1:/data/data/com.termux/files/home # ls -l /proc/config.gz
-r--r--r-- 1 root root 25905 2023-02-13 19:12 /proc/config.gz
t8-p1:/data/data/com.termux/files/home #
t8-p1:/data/data/com.termux/files/home # zcat /proc/config.gz | grep -i acm
# CONFIG_FB_MACMODES is not set
CONFIG_USB_ACM=y
# CONFIG_USB_CONFIGFS_ACM is not set
# CONFIG_USB_G_ACM_MS is not set
t8-p1:/data/data/com.termux/files/home #
Я так понял можно покупать!!

Gennik 13.02.2023 20:45

И еще вопрос после всех манмпуляций с настройками остается потом возможнасть пользрваться встроенным приемником,если что ,Только что позвонил друг и сказал что у него такая же фигня со спутниками!! Может я зря его пока мучаю!!! СВО!!

ABCh 13.02.2023 21:21

Нужно не удалять оригинальный файл /system/lib/hw/gps.default.so, а переименовать его, чтобы можно было вернуться к исходному состоянию. Если дело происходит в Воронежской области, то, возможно, где-то неподалеку глушат сигнал gps. Тогда нужно думать о переходе на Глонасс.

Gennik 13.02.2023 21:35

ABCh-спасибо Вам за помощь! Пока вк-162 нет если все же надумаю купить к Вам придется опять обратиться! дело происходит в Воронежской области, то, возможно, где-то неподалеку глушат сигнал gps.-Я и живу рядом с энтим местом!!!!По этому все может быть!!!

denbon 27.07.2023 14:05

Всех приветствую!
Подскажите пожалуйста, хочу запустить GPS модуль на Orange PI5 (rockchip rk3588) в операционной системе Android 12 поставляемой с ней. Нашел похожий мануал, правда на другую плату, но с аналогичным чипом, но выполнив все как там написано потоки данных идут с GPS приемника, но программы его не видят.
Согласно мануалу в файле /vendor/build.prop меняем
ro.factory.hasGPS=false
на
ro.factory.hasGPS=true
далее как по мануалу написано изменить значение SERIAL_DEVICE и SERIAL_BAUD_RATE в файле /system/etc/u-blox.conf Но этого файла нет в этой директории

Выполнив команду ls /dev/tty*
видно, что USB GPS приемник подключился к ttyACM0

Отправляю команду cat /dev/ttyACM0

Получаю ответ

Код:

~ $ su
:/data/data/com.termux/files/home # cat /dev/ttyACM0
$GPTXT,01,01,02,u-blox ag - www.u-blox.com*50

$GPTXT,01,01,02,HW  UBX-G70xx  00070000 *77

$GPTXT,01,01,02,ROM CORE 1.00 (59842) Jun 27 2012 17:43:52*59

$GPTXT,01,01,02,PROTVER 14.00*1E

$GPTXT,01,01,02,ANTSUPERV=AC SD PDoS SR*20

$GPTXT,01,01,02,ANTSTATUS=OK*3B

$GPTXT,01,01,02,LLC FFFFFFFF-FFFFFFFD-FFFFFFFF-FFFFFFFF-FFFFFFF9*53

$GPRMC,095037.00,V,,,,,,,270723,,,N*76

$GPVTG,,,,,,,,,N*30

$GPGGA,095037.00,,,,,0,00,99.99,,,,,,*6E

$GPGSA,A,1,,,,,,,,,,,,,99.99,99.99,99.99*30

$GPGSV,1,1,01,23,,,28*73

$GPGLL,,,,,095037.00,V,N*42

$GPRMC,095038.00,V,,,,,,,270723,,,N*79

$GPVTG,,,,,,,,,N*30

$GPGGA,095038.00,,,,,0,00,99.99,,,,,,*61

$GPGSA,A,1,,,,,,,,,,,,,99.99,99.99,99.99*30

$GPGSV,1,1,01,23,,,28*73

$GPGLL,,,,,095038.00,V,N*4D

$GPRMC,095039.00,V,,,,,,,270723,,,N*78

$GPVTG,,,,,,,,,N*30

$GPGGA,095039.00,,,,,0,00,99.99,,,,,,*60

$GPGSA,A,1,,,,,,,,,,,,,99.99,99.99,99.99*30

$GPGSV,1,1,01,23,,,28*73

$GPGLL,,,,,095039.00,V,N*4C

$GPRMC,095040.00,V,,,,,,,270723,,,N*76

$GPVTG,,,,,,,,,N*30

$GPGGA,095040.00,,,,,0,00,99.99,,,,,,*6E

$GPGSA,A,1,,,,,,,,,,,,,99.99,99.99,99.99*30

$GPGSV,1,1,01,23,,,28*73

$GPGLL,,,,,095040.00,V,N*42

$GPRMC,095041.00,V,,,,,,,270723,,,N*77

$GPVTG,,,,,,,,,N*30

$GPGGA,095041.00,,,,,0,00,99.99,,,,,,*6F

$GPGSA,A,1,,,,,,,,,,,,,99.99,99.99,99.99*30

$GPGSV,1,1,01,23,,,27*7C

$GPGLL,,,,,095041.00,V,N*43

$GPRMC,095042.00,V,,,,,,,270723,,,N*74

Помогите разобраться?

softlander 28.07.2023 00:25

Android-прошивка для вашей платы собрана с подедржкой GPS?
Вот, например, для Odroid я смотрю описание прошивок, там четко написано - есть, а здесь не нахожу. Эта поддержка добавляется только, если на вашей плате есть встроенный модуль GPS, но здесь его нет.
Есть какие-нибудь файлы с именем gps в директориях system или vendor?
Значит поддержки нет.

* Нужно взять исходники Android для вашей платы, взять какой-нибудь GPS Serial драйвер с github и пересобрать прошивку с поддержкой. (В Android 9 можно было докинуть недостающие файлы из других прошивок, но в след. версиях опять все переделали и теперь это не сработает - только пересобирать прошивку).
* Использовать программу фиктивных местоположений, но будет ли она работать на Android 12.
* Взять другой одноплатник, где поддержка уже заявлена (например, ODROID-N2).

denbon 28.07.2023 23:50

Цитата:

Сообщение от softlander (Сообщение 419276)
Есть какие-нибудь файлы с именем gps в директориях system или vendor?

Есть только файл gps_debug.conf в папке /system/etc

Выше ABCh писал:
Цитата:

Сообщение от ABCh (Сообщение 419100)
VK-162 поддерживается модулем ядра acm. Если ядро содержит файл конфигурации, что можно проверить
Код:

su
ls -l /proc/config.gz

если есть, то смотрим
Код:

zcat /proc/config.gz | grep -i acm
если видим CONFIG_USB_ACM=y, то нужный модуль есть.

Я ввел эти команды и у меня есть этот параметр CONFIG_USB_ACM=y

ABCh 30.07.2023 19:47

Цитата:

Сообщение от denbon (Сообщение 419275)
хочу запустить GPS модуль на Orange PI5 (rockchip rk3588) в операционной системе Android 12 поставляемой с ней. Нашел похожий мануал, правда на другую плату, но с аналогичным чипом, но выполнив все как там написано потоки данных идут с GPS приемника, но программы его не видят.
Согласно мануалу в файле /vendor/build.prop меняем
ro.factory.hasGPS=false
на
ro.factory.hasGPS=true
далее как по мануалу написано изменить значение SERIAL_DEVICE и SERIAL_BAUD_RATE в файле /system/etc/u-blox.conf Но этого файла нет в этой директории

1. Из того, что приведено, видно, что gps-приемник поддерживается ядром, что уже хорошо.
2. Для того чтобы пользоваться неким мануалом, нужно быть на 100% уверенным, что он имеет отношение к Вашей прошивке, поскольку описанные в нем настройки могут просто быть неактуальными.
3. Для поддержки gps-приемника обязательно должен присутствовать файл с именем gps."что-нибудь".so в /system/lib/hw либо /vendor/lib/hw для 32-битной ОС, или, соответственно, в /system/lib64/hw либо /vendor/lib64/hw - для 64-битной ОС.
4. Начиная с 8-й версии андроида, для работы геопозиционирования необходимо наличие службы fused location provider. Проверить наличие можно консольной командой:
Код:

ps -A | grep gnss
ответ должен быть подобным
Код:

gps          1501    1  22916  6160 binder_thread_read  0 S android.hardware.gnss@1.0-service
Если условия 3 и 4 выполнены, остается только подобрать параметр в /vendor/build.prop, указывающий порт gps-приемника, например
Код:

ro.kernel.android.gps=ttyACM0
либо так, как указано в Вашем мануале.

softlander 07.08.2023 21:51

Вот интересная статья про организацию систему навигации в современных версиях Андроид.

Еще сложность в том, что начиная с Андроид 10 изменили концепцию системы и структуру разделов, была переделана система безопасности. И теперь такие разделы, как system и vendor доступны только для чтения даже при наличии рут. Насколько понимаю, теперь нет возможности непосредственного доступа к файлам, и все идет через какую-то виртуальную прослойку. Невозможно простым способом вносить изменения и правки в системные файлы как раньше. По крайней мере так сообщает Гугл. А как на самом деле обстоит дело, вот автор пишет, что внес изменения в build.prop ... К сожалению, не сталкивался с Андроидом старше 9 версии. DaveMF писал в статье, что пришлось драйвер тоже переписывать (у него плата khadas vim).

softlander 07.08.2023 23:04

Вложений: 1
Вот инструкция для добавления поддержки GPS и Глонасс в прошивки для медиабоксов на Amlogic-процессоре с Андроид 9. Проверял на x96 stick и Beelink gt mini. Проверял только 32-бит версию.

Используем USB GPS M8N модуль от Ublox со встроенным micro-usb разъемом, разпознается как ttyACM. Если у вас другой модуль и он распознается как ttyUSB, то с приложенным сюда драйвером он работать не будет.

Вот почему:
gps-драйвер ищет модуль самостоятельно по vendor.id и product.id, сканируя все доступные tty в выбранном диапазоне (ro.kernel.android.gps) в файлах
/sys/class/tty/{ro.kernel.android.gps}n/device/uevent
cdc-acm заполняет все данные полностью, а драйвера ядра pl2303 и ftdi_sio - нет.
Для полной поддержки требуется внести правки в gps-драйвер и его перекомпилировать, но пока нет возможности это сделать. Вот здесь эта проблема описана, там же есть исправленная версия драйвера, но только для 64-битной версии.

-------------------------------

Прежде чем мы внесем изменения, чтобы иметь возможность откатиться назад, если не получится, необходимо убедиться, что:
  • у вас есть полноценный работающий Recovery (TWRP), в который вы можете попасть при загрузке, зажав определенную кнопку.
  • вы можете в нем смонтировать раздел Vendor и проводником добраться до файла /system/vendor/etc/vintf/manifest.xml.
  1. файл android.hardware.location.gps.xml
    поместить в /system/vendor/etc/permissions/
    выставить права 644
  2. файлы android.hardware.gnss@1.0-impl.so и gps.amlogic.so
    поместить в /system/vendor/lib/hw/
    выставить права 644
    для 64-битной версии: еще потребуется из папки vendor-lib64-hw файлы поместить в /system/vendor/lib64/hw/
    выставить права 644
  3. файл android.hardware.gnss@1.0-service
    поместить в /system/vendor/bin/hw/
    выставить права 755
  4. файл android.hardware.gnss@1.0-service.rc
    поместить в /system/vendor/etc/init
    выставить права 644
  5. Важно правильно указать productid и vendorid нашего USB GPS, драйвер находит tty именно по ним.
    (ro.kernel.android.gps указываем без цифры, драйвер сам просканирует все указанные нами tty и найдет нужный)
    (опять же в драйвере есть недоработка - не находит устройство, если productid или vendorid начинается на "0" - 01a8, нужно указывать без первого "0" - 1a8)
    добавить в файл /system/vendor/build.prop
    Код:

    # USB GPS Ublox [M6:1546-1a6, M7:1546-1a7, M8:1546-1a8]
    ro.gps.id.vendor=1546
    ro.gps.id.product=1a8
    ro.kernel.android.gps=ttyACM
    ro.kernel.android.gps.speed=9600
    ro.kernel.android.gps.max_rate=1

  6. (чтобы драйвер смог получить доступ к потоку данных, tty нужны правильные права - по умолчанию ставятся 600, которых недостаточно)
    добавить в файл /system/vendor/ueventd.rc
    Код:

    #GNSS USB GPS Ublox
    /dev/ttyACM*      0666 gps gps

  7. (самый важный пункт, чтобы все это подгрузилось системой)
    здесь содержится список компонентов, которые Андроид подгружает в текущей сборке.
    добавить в файл /system/vendor/etc/vintf/manifest.xml
    после любого
    Код:

       
          android.hardware.gnss
          hwbinder
          1.0
         
            IGnss
            default
         

          @1.0::IGnss/default
       

Файл сохранить под именем manifest_with_gps.xml.
В оригинальный файл изменения не вносить, чтобы можно было откатиться назад.
Выставить этому файлу права, такие же как у оригинального файла - 644.
Теперь у нас manifest.xml (оригинальный) и manifest_with_gps.xml (измененный) лежат рядом в директории /system/vendor/etc/vintf/.
Чтобы запустить поддержку GPS, нужно переименовать manifest.xml в manifest_origin.xml, а manifest_with_gps.xml в manifest.xml и перезагрузить.

Если все сделали правильно, то Андроид подгрузит службу GNSS, а она в свою очередь - драйвер. Программы GPS будут показывать вместо No GPS - No Fix, в настройках пункт Местоположение будет нормально работать.
Если что-то пойдет не так, система просто не загрузится и повиснет на бутанимации,
мы перезагрузимся, удерживая кнопку, зайдем в Recovery, попадем в TWRP, смонтируем раздел Vendor, проводником доберемся до директории /system/vendor/etc/vintf/ и переименуем обратно файл manifest.xml в manifest_with_gps.xml, а manifest_origin.xml в manifest.xml.
Все вернется к изначальному варианту.

ABCh 08.08.2023 08:26

Цитата:

Сообщение от softlander (Сообщение 419283)
Еще сложность в том, что начиная с Андроид 10 изменили концепцию системы и структуру разделов, была переделана система безопасности. И теперь такие разделы, как system и vendor доступны только для чтения даже при наличии рут. Насколько понимаю, теперь нет возможности непосредственного доступа к файлам, и все идет через какую-то виртуальную прослойку. Невозможно простым способом вносить изменения и правки в системные файлы как раньше. По крайней мере так сообщает Гугл.

Достаточно всего лишь перемонтировать соответствующий раздел на чтение-запись и обычным образом внести изменения в файлы. Работает на всех версиях Андроида .
Цитата:

Сообщение от softlander (Сообщение 419283)
А как на самом деле обстоит дело, вот автор пишет, что внес изменения в build.prop ... К сожалению, не сталкивался с Андроидом старше 9 версии. DaveMF писал в статье, что пришлось драйвер тоже переписывать (у него плата khadas vim).

Возможно, у него были какие-то иные резоны делать это, о которых он не пишет.

ABCh 08.08.2023 08:41

Цитата:

Сообщение от softlander (Сообщение 419284)
Вот инструкция для добавления поддержки GPS и Глонасс в прошивки для медиабоксов на Amlogic-процессоре с Андроид 9. Проверял на x96 stick и Beelink gt mini. Проверял только 32-бит версию.

Используем USB GPS M8N модуль от Ublox со встроенным micro-usb разъемом, разпознается как ttyACM. Если у вас другой модуль и он распознается как ttyUSB, то с приложенным сюда драйвером он работать не будет.

Вот почему:
gps-драйвер ищет модуль самостоятельно по vendor.id и product.id, сканируя все доступные tty в выбранном диапазоне (ro.kernel.android.gps) в файлах
/sys/class/tty/{ro.kernel.android.gps}n/device/uevent
cdc-acm заполняет все данные полностью, а драйвера ядра pl2303 и ftdi_sio - нет.
Для полной поддержки требуется внести правки в gps-драйвер и его перекомпилировать, но пока нет возможности это сделать. Вот здесь эта проблема описана, там же есть исправленная версия драйвера, но только для 64-битной версии.

Не рекомендую использовать этот gps hal модуль, который почему-то некорректно называется драйвеорм. Он написан из предположения, что в системе имеется всего одно устройство ttyACM. Если имеется еще одно, например, какое-нибудь Arduino на чипе 32u4, то gps работать не будет. Мне было лень править и отлаживать этот модуль для Khadas VIM3 и я просто заменил его на старый добрый референсный gps hal.

denbon 20.08.2023 17:10

Цитата:

Сообщение от softlander (Сообщение 419283)
Вот интересная статья про организацию систему навигации в современных версиях Андроид.

Еще сложность в том, что начиная с Андроид 10 изменили концепцию системы и структуру разделов, была переделана система безопасности. И теперь такие разделы, как system и vendor доступны только для чтения даже при наличии рут. Насколько понимаю, теперь нет возможности непосредственного доступа к файлам, и все идет через какую-то виртуальную прослойку. Невозможно простым способом вносить изменения и правки в системные файлы как раньше. По крайней мере так сообщает Гугл. А как на самом деле обстоит дело, вот автор пишет, что внес изменения в build.prop ... К сожалению, не сталкивался с Андроидом старше 9 версии. DaveMF писал в статье, что пришлось драйвер тоже переписывать (у него плата khadas vim).

Все верно, в новых версиях Андроида не получится просто так внести изменения, но в Андроиде 12 для OPI5 можно подключить Android по ADB, и выполнив две команды, можно сделать чтобы корневой раздел Андроида был доступный для записи, до первой перезагрузки

adb -s ххх.ххх.хх.ххх:хххх root
adb -s ххх.ххх.хх.ххх:хххх remount

Цитата:

Сообщение от ABCh (Сообщение 419285)
Достаточно всего лишь перемонтировать соответствующий раздел на чтение-запись и обычным образом внести изменения в файлы. Работает на всех версиях Андроида .

Возможно, у него были какие-то иные резоны делать это, о которых он не пишет.

Хочу интегрировать OPI5 в авто, и без GPS никуда. Но беда в том, что как заставить работать GPS приемник малой кровью. Исходники Андроида есть, но добавить драйвер у меня не хватает знаний. Подскажите, есть ли мануал по этой теме.

ABCh 20.08.2023 19:08

Цитата:

Сообщение от denbon (Сообщение 419304)
Хочу интегрировать OPI5 в авто, и без GPS никуда. Но беда в том, что как заставить работать GPS приемник малой кровью. Исходники Андроида есть, но добавить драйвер у меня не хватает знаний.

Будете самостоятельно собирать андроид для Вашего устройства?
Цитата:

Сообщение от denbon (Сообщение 419304)
Подскажите, есть ли мануал по этой теме.

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

denbon 20.08.2023 20:31

Цитата:

Сообщение от ABCh (Сообщение 419305)
Будете самостоятельно собирать андроид для Вашего устройства?

Сложный вопрос, если разобраться то можно. Легче наверное, найти кто готов за это взяться

ABCh 21.08.2023 08:44

Я делаю только для того железа, которое есть под руками. Чтобы не получить в итоге сферического коня в вакууме.
Сборка андроида весьма затратный процесс. Нужно иметь на сборочном компьютере для 12-го андроида не менее 16 гигов памяти, а для 13-го - уже не менее 24. И процессор, по крайней мере, i5 или аналогичный по производительности AMD.

-=KoG=- 14.10.2023 14:03

Здравствуйте всем!

У меня возникла проблема, с которой не получается самостоятельно справиться и требуется помощь от сообщества.

Дано:
- материнская плата JNF3A-2930 (onboard Celeron N2930) https://www.jetwaycomputer.com/NF3A.html
- Dharma GPS PCI-E Mini Card DGC-D5030 (u-blox 5) https://www.5sgroup.ru/support/gps/D.../DGC-D5030.pdf Программа GPS Connector его видит как:
→ Vendor: 0x1546 Class: 0x02
→ Product: 0x01a5 Subclass: 0x00
- Android x86 8.1.0 (пробовались разные версии, но об этом ниже).


В конец файла \system\build.prop добавлены строки:
ro.kernel.android.gps=ttyACM0
ro.kernel.android.gps.speed=9600
ro.kernel.android.gps.max_rate=1
ro.factory.hasGPS=true
(speed и max_rate убирал, скорость и частоту опроса менял, в части проблемы ничего не меняется)


В /system/lib/hw (/system/lib64/hw для x86_64) присутствуют файлы (файлы не менял):
- gps.default.so
- gps.huawei.so


Результат:
- GPS модуль висит на ttyACM0;
- по cat /dev/ttyACM0 идёт непрерывный поток данных;
- в программе GPS Test спутники GPS и SBAS (модуль другие не видит) видны (порядка 10 - 14 штук)
- другие программы их также видят.


Поблема:
Не смотря на то, что спутники видны, координаты в той же GPS Test показываются нулевые и периодически раз в несколько секунд прыгают на правильные. На карте мира в GPS тест это выглядит как точка в позиции 0"N 0"E, которая периодически прыгает в нужное положение с отображением правильных координат что-то там 56..."N и 38..."E.

Что делал:
  • GPS модуль менял на u-blox pci-5s-1-500, эффект тот же.
  • Версии Android менял от 4.4 до 9 (старше не ставятся). Брал их здесь https://www.fosshub.com/Android-x86-old.html и здесь https://www.fosshub.com/Android-x86.html
  • На 4.4, 6-й и 7-й GPS работает, но не работает WiFi (он внешний, через USB свисток).
  • На 8.1. завёлся и GPS и WiFi, но с проблемой, описанной выше. Перебрал и x86 r5/r6 и x86_64 r5/r6 и x86_64 r5/r6 k49, всё одинаково.
  • На 9.0 GPS не заводится от слова совсем. WiFi работает без проблем.

Подскажите, плиз, куда копать...?

gkneck 15.10.2023 15:52

Цитата:

Сообщение от softlander (Сообщение 419284)
Вот инструкция для добавления поддержки GPS и Глонасс в прошивки для медиабоксов на Amlogic-процессоре с Андроид 9. Проверял на x96 stick и Beelink gt mini. Проверял только 32-бит версию.

Используем USB GPS M8N модуль от Ublox со встроенным micro-usb разъемом, разпознается как ttyACM. Если у вас другой модуль и он распознается как ttyUSB, то с приложенным сюда драйвером он работать не будет.

Вот почему:
gps-драйвер ищет модуль самостоятельно по vendor.id и product.id, сканируя все доступные tty в выбранном диапазоне (ro.kernel.android.gps) в файлах
/sys/class/tty/{ro.kernel.android.gps}n/device/uevent
cdc-acm заполняет все данные полностью, а драйвера ядра pl2303 и ftdi_sio - нет.
Для полной поддержки требуется внести правки в gps-драйвер и его перекомпилировать, но пока нет возможности это сделать. Вот здесь эта проблема описана, там же есть исправленная версия драйвера, но только для 64-битной версии.

-------------------------------

Прежде чем мы внесем изменения, чтобы иметь возможность откатиться назад, если не получится, необходимо убедиться, что:
  • у вас есть полноценный работающий Recovery (TWRP), в который вы можете попасть при загрузке, зажав определенную кнопку.
  • вы можете в нем смонтировать раздел Vendor и проводником добраться до файла /system/vendor/etc/vintf/manifest.xml.
  1. файл android.hardware.location.gps.xml
    поместить в /system/vendor/etc/permissions/
    выставить права 644
  2. файлы android.hardware.gnss@1.0-impl.so и gps.amlogic.so
    поместить в /system/vendor/lib/hw/
    выставить права 644
    для 64-битной версии: еще потребуется из папки vendor-lib64-hw файлы поместить в /system/vendor/lib64/hw/
    выставить права 644
  3. файл android.hardware.gnss@1.0-service
    поместить в /system/vendor/bin/hw/
    выставить права 755
  4. файл android.hardware.gnss@1.0-service.rc
    поместить в /system/vendor/etc/init
    выставить права 644
  5. Важно правильно указать productid и vendorid нашего USB GPS, драйвер находит tty именно по ним.
    (ro.kernel.android.gps указываем без цифры, драйвер сам просканирует все указанные нами tty и найдет нужный)
    (опять же в драйвере есть недоработка - не находит устройство, если productid или vendorid начинается на "0" - 01a8, нужно указывать без первого "0" - 1a8)
    добавить в файл /system/vendor/build.prop
    Код:

    # USB GPS Ublox [M6:1546-1a6, M7:1546-1a7, M8:1546-1a8]
    ro.gps.id.vendor=1546
    ro.gps.id.product=1a8
    ro.kernel.android.gps=ttyACM
    ro.kernel.android.gps.speed=9600
    ro.kernel.android.gps.max_rate=1

  6. (чтобы драйвер смог получить доступ к потоку данных, tty нужны правильные права - по умолчанию ставятся 600, которых недостаточно)
    добавить в файл /system/vendor/ueventd.rc
    Код:

    #GNSS USB GPS Ublox
    /dev/ttyACM*      0666 gps gps

  7. (самый важный пункт, чтобы все это подгрузилось системой)
    здесь содержится список компонентов, которые Андроид подгружает в текущей сборке.
    добавить в файл /system/vendor/etc/vintf/manifest.xml
    после любого
    Код:

       
          android.hardware.gnss
          hwbinder
          1.0
         
            IGnss
            default
         

          @1.0::IGnss/default
       

Файл сохранить под именем manifest_with_gps.xml.
В оригинальный файл изменения не вносить, чтобы можно было откатиться назад.
Выставить этому файлу права, такие же как у оригинального файла - 644.
Теперь у нас manifest.xml (оригинальный) и manifest_with_gps.xml (измененный) лежат рядом в директории /system/vendor/etc/vintf/.
Чтобы запустить поддержку GPS, нужно переименовать manifest.xml в manifest_origin.xml, а manifest_with_gps.xml в manifest.xml и перезагрузить.

Если все сделали правильно, то Андроид подгрузит службу GNSS, а она в свою очередь - драйвер. Программы GPS будут показывать вместо No GPS - No Fix, в настройках пункт Местоположение будет нормально работать.
Если что-то пойдет не так, система просто не загрузится и повиснет на бутанимации,
мы перезагрузимся, удерживая кнопку, зайдем в Recovery, попадем в TWRP, смонтируем раздел Vendor, проводником доберемся до директории /system/vendor/etc/vintf/ и переименуем обратно файл manifest.xml в manifest_with_gps.xml, а manifest_origin.xml в manifest.xml.
Все вернется к изначальному варианту.

http://www.pccar.ru/showpost.php?p=4...postcount=1417

Доброго времени!
Будучи "чайником", сделал всё по этой инструкции на таком же x96 stick (2/16) с таким же модулем M8N. Прошивка slimBox AOSP. Но приложения спутники не находят.

Файлы build.prop, ueventd.rc, manifest.xml изменял на ПК в блокноте копированием указанных строк в конце содержимого. Разрешения им выставил, соответственно: 755, 644, 644.
Единственно, что файл gps.amlogic_ver2.so никуда не скопировал, т.к. про него не сказано в инструкции.
Приложение GPS Test показывает Статус GNSS: "No Fix".

Подскажите пожалуйста, в чём может быть причина?
Как проверить на исправность сам модуль M8N?

ABCh 15.10.2023 17:18

Цитата:

Сообщение от -=KoG=- (Сообщение 419334)
Не смотря на то, что спутники видны, координаты в той же GPS Test показываются нулевые и периодически раз в несколько секунд прыгают на правильные. На карте мира в GPS тест это выглядит как точка в позиции 0"N 0"E, которая периодически прыгает в нужное положение с отображением правильных координат что-то там 56..."N и 38..."E.

1. антенна gps-приемника подключена?
2. пробуете в помещении или в автомобиле?
3. покажите вывод
Код:

cat /dev/ttyACM0
за период времени, когда прыгают координаты.

-=KoG=- 15.10.2023 18:39

В дополнение к предыдущему посту.
Пробовал убирать gps.huawei.so, ни на что не влияет.
Пробовал заменять gps.default.so на альтернативные варианты, какие смог найти, но система запускается только с родным. С любым другим gps.default.so висит на заставке "ANDROID".

-=KoG=- 15.10.2023 18:44

Цитата:

Сообщение от ABCh (Сообщение 419336)
1. антенна gps-приемника подключена?
2. пробуете в помещении или в автомобиле?
3. покажите вывод
Код:

cat /dev/ttyACM0
за период времени, когда прыгают координаты.

1. Да, подключена.
2. Антенна на улице. Загружаю образ на Android 4.4, всё работает. Возвращаю образ (ничего не меняя в части антенны), получаю проблему.
3. Сейчас попробую вытащить с терминала.

-=KoG=- 15.10.2023 20:37

Вложений: 2
Цитата:

Сообщение от ABCh (Сообщение 419336)
3. покажите вывод
Код:

cat /dev/ttyACM0
за период времени, когда прыгают координаты.

Выглядит вот так (cat /dev/ttyACM0 > file.name):
$GPRMC,161745.00,A,5644.24777,N,03851.94760,E,0.01 1,,151023,,,D*70
$GPVTG,,T,,M,0.011,N,0.020,K,D*24
$GPGGA,161745.00,5644.24777,N,03851.94760,E,2,11,1 .16,142.2,M,12.0,M,,*5E
$GPGSA,A,3,30,40,24,22,02,13,23,17,14,15,19,,1.97, 1.16,1.60*03
$GPGSV,4,1,15,01,15,067,37,02,18,047,43,07,00,114, ,10,11,344,*76
$GPGSV,4,2,15,13,52,201,13,14,59,078,48,15,47,263, 27,17,46,137,51*75
$GPGSV,4,3,15,19,27,163,48,21,16,036,,22,77,101,46 ,23,17,308,28*7A
$GPGSV,4,4,15,24,29,290,25,30,27,117,46,40,24,160, 38*41
$GPGLL,5644.24777,N,03851.94760,E,161745.00,A,D*6D
$GPRMC,161746.00,A,5644.24779,N,03851.94749,E,0.03 4,,151023,,,D*71
$GPVTG,,T,,M,0.034,N,0.063,K,D*24
$GPGGA,161746.00,5644.24779,N,03851.94749,E,2,12,1 .16,142.2,M,12.0,M,,*5B
$GPGSA,A,3,30,40,24,22,02,13,23,17,21,14,15,19,1.9 7,1.16,1.60*00
$GPGSV,4,1,15,01,15,067,37,02,18,047,43,07,00,114, ,10,11,344,*76
$GPGSV,4,2,15,13,52,201,18,14,59,078,48,15,47,263, 26,17,46,137,51*7F
$GPGSV,4,3,15,19,27,163,47,21,16,036,31,22,77,101, 46,23,17,308,28*77
$GPGSV,4,4,15,24,29,290,25,30,27,117,46,40,24,160, 38*41
$GPGLL,5644.24779,N,03851.94749,E,161746.00,A,D*6B
$GPRMC,161747.00,A,5644.24780,N,03851.94746,E,0.01 7,,151023,,,D*78
$GPVTG,,T,,M,0.017,N,0.031,K,D*22
$GPGGA,161747.00,5644.24780,N,03851.94746,E,2,11,0 .92,142.1,M,12.0,M,,*5E
$GPGSA,A,3,30,40,24,22,02,13,23,17,14,15,19,,1.78, 0.92,1.52*0E
$GPGSV,4,1,15,01,15,067,38,02,18,047,43,07,00,114, ,10,11,344,*79
$GPGSV,4,2,15,13,52,201,20,14,59,078,49,15,47,263, 27,17,46,137,51*74
$GPGSV,4,3,15,19,27,163,48,21,16,036,,22,77,101,46 ,23,17,308,27*75
$GPGSV,4,4,15,24,29,290,25,30,27,117,46,40,24,160, 38*41
$GPRMC,161748.00,A,5644.24782,N,03851.94733,E,0.02 0,,151023,,,D*73
$GPVTG,,T,,M,0.020,N,0.037,K,D*20
$GPGGA,161748.00,5644.24782,N,03851.94733,E,2,11,1 .24,142.0,M,12.0,M,,*5C
$GPGSA,A,3,30,40,24,22,02,13,23,17,14,15,19,,2.22, 1.24,1.84*05
$GPGSV,4,1,15,01,15,067,38,02,18,047,44,07,00,114, ,10,11,344,*7E
$GPGSV,4,2,15,13,52,201,18,14,59,078,49,15,47,263, 28,17,46,137,51*70
$GPGSV,4,3,15,19,27,163,48,21,16,036,,22,77,101,46 ,23,17,308,27*75
$GPGSV,4,4,15,24,29,290,26,30,27,117,46,40,24,160, 38*42
$GPGLL,5644.24782,N,03851.94733,E,161748.00,A,D*6C
$GPRMC,161749.00,A,5644.24783,N,03851.94727,E,0.01 5,,151023,,,D*70
$GPVTG,,T,,M,0.015,N,0.028,K,D*28
$GPGGA,161749.00,5644.24783,N,03851.94727,E,2,11,0 .92,142.0,M,12.0,M,,*55
$GPGSA,A,3,30,40,24,22,02,13,23,17,14,15,19,,1.78, 0.92,1.52*0E
$GPGSV,4,1,15,01,15,067,38,02,18,047,44,07,00,114, ,10,11,344,*7E
$GPGSV,4,2,15,13,52,201,22,14,59,078,49,15,47,263, 26,17,46,137,51*77
$GPGSV,4,3,15,19,27,163,48,21,16,036,,22,77,101,46 ,23,17,308,26*74
$GPGSV,4,4,15,24,29,290,24,30,27,117,46,40,24,160, 38*40
$GPGLL,5644.24783,N,03851.94727,E,161749.00,A,D*69
$GPRMC,161750.00,A,5644.24784,N,03851.94721,E,0.00 8,,151023,,,D*75
$GPVTG,,T,,M,0.008,N,0.015,K,D*2A
$GPGGA,161750.00,5644.24784,N,03851.94721,E,2,11,0 .92,142.0,M,12.0,M,,*5C
GPGSV,4,1,15,01,15,067,38,02,18,047,44,07,00,114,, 10,11,344,*7E
$GPGSV,4,2,15,13,52,201,20,14,59,078,49,15,47,263, 27,17,46,137,51*74
$GPGSV,4,3,15,19,27,163,48,21,16,036,,22,77,101,46 ,23,17,308,26*74
$GPGSV,4,4,15,24,29,290,22,30,27,117,46,40,24,160, 38*46
$GPGLL,5644.24784,N,03851.94721,E,161750.00,A,D*60
$GPRMC,161751.00,A,5644.24785,N,03851.94712,E,0.00 9,,151023,,,D*74
$GPVTG,,T,,M,0.009,N,0.017,K,D*29
$GPGGA,161751.00,5644.24785,N,03851.94712,E,2,11,0 .92,142.0,M,12.0,M,,*5C
GPGSV,4,1,15,01,15,067,38,02,18,047,44,07,00,114,, 10,11,344,*7E
$GPGSV,4,2,15,13,52,201,18,14,59,078,49,15,47,263, 24,17,46,137,51*7C
$GPGSV,4,3,15,19,27,163,47,21,16,036,,22,77,101,46 ,23,17,308,25*78
$GPGSV,4,4,15,24,29,290,21,30,27,117,46,40,24,160, 38*45
$GPGLL,5644.24785,N,03851.94712,E,161751.00,A,D*60
$GPRMC,161752.00,A,5644.24785,N,03851.94703,E,0.03 8,,151023,,,D*75
$GPVTG,,T,,M,0.038,N,0.070,K,D*2A
$GPGGA,161752.00,5644.24785,N,03851.94703,E,2,11,0 .92,142.1,M,12.0,M,,*5E
$GPGSA,A,3,30,40,24,22,02,13,23,17,14,15,19,,1.78, 0.92,1.52*0E
$GPGSV,4,1,15,01,15,067,39,02,18,047,44,07,00,114, ,10,11,344,*7F
$GPGSV,4,2,15,13,52,201,17,14,59,078,49,15,47,263, 21,17,46,137,51*76
$GPGSV,4,3,15,19,27,163,48,21,16,036,,22,77,101,46 ,23,17,308,23*71
$GPGSV,4,4,15,24,29,290,22,30,27,117,46,40,24,160, 38*46
$GPGLL,5644.24785,N,03851.94703,E,161752.00,A,D*63
$GPRMC,161753.00,A,5644.24785,N,03851.94693,E,0.03 4,,151023,,,D*70
$GPVTG,,T,,M,0.034,N,0.062,K,D*25
$GPGGA,161753.00,5644.24785,N,03851.94693,E,2,11,0 .92,142.1,M,12.0,M,,*57
$GPGSA,A,3,30,40,24,22,02,13,23,17,14,15,19,,1.78, 0.92,1.52*0E
$GPGSV,4,1,15,01,15,067,39,02,18,047,44,07,00,114, ,10,11,344,*7F
$GPGSV,4,2,15,13,52,201,18,14,59,078,49,15,47,263, 23,17,46,137,51*7B
$GPGSV,4,3,15,19,27,163,47,21,16,036,,22,77,101,46 ,23,17,308,23*7E
$GPGSV,4,4,15,24,29,290,23,30,27,117,46,40,24,160, 38*47
$GPGLL,5644.24785,N,03851.94693,E,161753.00,A,D*6A

А вот так выглядит в реале:

-=KoG=- 15.10.2023 20:48

Вложений: 1
На всякий случай сделал выборку за более длительное время.

ABCh 16.10.2023 10:13

Суда по логам, gps-приемник работает исправно, координаты определены, сбоев не видно. Насколько я помню, версия 8.1 работает нестабильно, а в версии 9.0 работу gps так и не исправили. Если нужен быстрый результат, надо искать wifi-свисток, работающий в 7.1. Иначе пересобирать ядро для 7.1 с поддержкой Вашего свистка.

-=KoG=- 16.10.2023 11:16

Цитата:

Сообщение от ABCh (Сообщение 419341)
Суда по логам, gps-приемник работает исправно, координаты определены, сбоев не видно. Насколько я помню, версия 8.1 работает нестабильно, а в версии 9.0 работу gps так и не исправили. Если нужен быстрый результат, надо искать wifi-свисток, работающий в 7.1. Иначе пересобирать ядро для 7.1 с поддержкой Вашего свистка.

WiFi свосток или GPS? Не опечатка?

ABCh 16.10.2023 11:22

Наиболее стабильно, по крайней мере у меня, работает 7.1. Поэтому проще подобрать оборудование под эту версию, чем отлавливать глюки 8.1. Но если есть опыт сборки ядра, можете попробовать пересобрать опять же для 7.1.

-=KoG=- 16.10.2023 11:31

Цитата:

Сообщение от ABCh (Сообщение 419343)
Наиболее стабильно, по крайней мере у меня, работает 7.1. Поэтому проще подобрать оборудование под эту версию, чем отлавливать глюки 8.1. Но если есть опыт сборки ядра, можете попробовать пересобрать опять же для 7.1.

Не, не, не :no:
Я с Линуксом вообще и с Андроидом в частности даже не на "Вы", поэтому буду искать путь попроще, чем пересборка ядра.

-=KoG=- 16.10.2023 13:27

Цитата:

Сообщение от ABCh (Сообщение 419343)
Наиболее стабильно, по крайней мере у меня, работает 7.1. Поэтому проще подобрать оборудование под эту версию, чем отлавливать глюки 8.1. Но если есть опыт сборки ядра, можете попробовать пересобрать опять же для 7.1.

Поставил по Вашей рекомендации версию 7.1 (android-x86_64-7.1-r5-k419), полёт нормальный :smile2:
Большое спасибо за помощь.

softlander 16.10.2023 19:48

Цитата:

Сообщение от gkneck (Сообщение 419335)
http://www.pccar.ru/showpost.php?p=4...postcount=1417

Доброго времени!
Будучи "чайником", сделал всё по этой инструкции на таком же x96 stick (2/16) с таким же модулем M8N. Прошивка slimBox AOSP. Но приложения спутники не находят.

Приложение GPS Test показывает Статус GNSS: "No Fix".
Как проверить на исправность сам модуль M8N?

Модуль можно на PC проверить под Windows программа Ublox U-center.

Если GPS Test выводит "No Fix", значит драйвер загрузился, но не может найти ваш модуль или получить к нему доступ.

Вначале проверьте, возможно у вашего модуля другие VID:PID (не 1546:01a8),
в терминале введите lsmod

Можно заглянуть в логи и посмотреть, что выводит драйвер. Для работы с логами удобно использовать программу CatLog. Установите ее, запустите, нажмите иконку Пауза, чтобы новые данные не поступали, в текстовое поле введите gps, чтобы отфильтровать лишнее.

Вот вы подсоединили модуль, должен появиться ttyACM с номером в директории /dev/, проверить, какие выставились права у него (должны быть 666).

Затем, в терминале ввести cat /dev/ttyACM с вашим номером и должны выводиться данные с модуля.

gkneck 17.10.2023 01:22

Цитата:

Сообщение от softlander (Сообщение 419346)
Модуль можно на PC проверить под Windows программа Ublox U-center.

Если GPS Test выводит "No Fix", значит драйвер загрузился, но не может найти ваш модуль или получить к нему доступ.

Вначале проверьте, возможно у вашего модуля другие VID:PID (не 1546:01a8),
в терминале введите lsmod

Можно заглянуть в логи и посмотреть, что выводит драйвер. Для работы с логами удобно использовать программу CatLog. Установите ее, запустите, нажмите иконку Пауза, чтобы новые данные не поступали, в текстовое поле введите gps, чтобы отфильтровать лишнее.

Вот вы подсоединили модуль, должен появиться ttyACM с номером в директории /dev/, проверить, какие выставились права у него (должны быть 666).

Затем, в терминале ввести cat /dev/ttyACM с вашим номером и должны выводиться данные с модуля.

после ввода в терминале lsmod, вот, что получилось:
https://disk.yandex.ru/i/hFrLTFCvsS05iQ

результат после фильтра по GPS:
https://disk.yandex.ru/i/Qmbg8tCElHLaRg


После подсоединения модуля появился ttyACM0, права 666.

[B]cat /dev/ttyACM0[B] приводит к многократной распечатке сообщения: [B]$GPTXT.01.01.01.NMEA unknow msg*58[B]

gkneck 17.10.2023 01:31

Прошу прощения, изображения не подгрузил.
http://www.pccar.ru/picture.php?albu...pictureid=2582
http://www.pccar.ru/picture.php?albu...pictureid=2583

softlander 17.10.2023 02:36

Судя по скриншоту, у вас Ublox 7, и параметры в build.prop должны быть такие
Код:

ro.gps.id.vendor=1546
ro.gps.id.product=1a7
ro.kernel.android.gps=ttyACM
ro.kernel.android.gps.speed=9600

Если не заработает, можно попробовать еще так: ro.gps.id.product=01a7
Если заказывали Ublox 8, то нужно просить у продавца компенсировать стоимость, открывать спор. В Ublox 7 или GPS или Глонасс.

gkneck 18.10.2023 00:13

Цитата:

Сообщение от softlander (Сообщение 419349)
Судя по скриншоту, у вас Ublox 7, и параметры в build.prop должны быть такие
Код:

ro.gps.id.vendor=1546
ro.gps.id.product=1a7
ro.kernel.android.gps=ttyACM
ro.kernel.android.gps.speed=9600

Если не заработает, можно попробовать еще так: ro.gps.id.product=01a7
Если заказывали Ublox 8, то нужно просить у продавца компенсировать стоимость, открывать спор. В Ublox 7 или GPS или Глонасс.

Спасибо за помощь!
После изменения на 1a7 в build.prop программа GPS Test на карте показывает 11 спутников, но пишет No Fix.

В Slimbox в закладке Местоположение есть два варианта: отключить и определять через WiFi. Попробовал Местоположение выключить, потом включить. Отключил WiFi-интернет вообще в опциях приставки. После этого GPS Test при тех же 10-11 спутниках колеблется от No Fix до 3D Fix. А Яндекс навигатор местоположение вообще не находит.

И это при подключенной, вынесенной на подоконник внешней GPS антенне.

Не подскажете, можно ещё что-то сделать, чтобы навигатор заработал?

На наклейке - да, как и положено, написано Ublox M8N. А китаец продал, выходит, Ublox 7. Открыл спор, посмотрим, чем закончится.


Часовой пояс GMT +4, время: 13:11.

Работает на vBulletin® версия 3.8.4.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot