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)

Rage2 19.03.2013 19:17

USB GPS for Android
 
Вложений: 16
Инструкция для подключения внешнего USB GPS к андройд девайсам.

Предисловие:
p.s. by tsynik
Цитата:

GPS состоит из драйвера и C-либы Андройд, которые независимы. Драйвер отвечает за физическое unix-устройство (/dev/ttyACMxxx /dev/ttyUSBxxx), если оно появляется - в терминале достаточно (и обычно даже не обязательно) установить скорость и читать поток NMEA (cat /dev/ttyUSBxxx). Далее, нужно передать эти данные системе через MOCK LOCATIONS (множество вариантов софта в маркете и в сети типа USBGPS4Droid), либо использовать C+ либу (завязана на версию андроид, может как иметь, так и не иметь настраиваемых параметров имени устройства и скорости порта).
Драйвера (модули)

-Для GlobalSat BU-353(SiRF Star III) и их семейства необходим модуль моста PL2303, => pl2303.ko 4800\9600
-Для Locosys LS23030 (MTK3339), LS23030-G(MTK3333), GlobalSat BU-353G(MTK3333) необходим модуль моста PL2303, => pl2303.ko
-Для Locosys LS23090, Locosys LS23030 и других (noname) GPS на чипах MediaTek (MTK3329), => cdc-acm.ko 115200
-Для Holux M-1000B, необходим адаптер FT232RL, => ftdi_sio.ko
-Так же может стоять модуль моста CP2102, => cp210x.ko

Нужные вам модули кидаем в папку "/system/lib/modules/"
Права на них выставить 644:
Код:

chmod 644 /system/lib/modules/ваш_модуль.ko
Для загрузки, выполняем команду:

Код:

insmod /system/lib/modules/ваш_модуль.ko
Если модуль успешно загрузился, можно посмотреть его наличие в памяти командной lsmod

В дальнейшем добавляем загрузку модуля в скрипт автозагрузки. (init.d или install-recovery.sh способом)


Софтовая версия модуля pl2303.
Которая не зависит от версии ядра и устройства. Должна работать у всех.
http://pccar.ru/showpost.php?p=321632&postcount=35

NEW! Версия pl2303drv с исправленной ошибкой "only position independent executables (PIE) are supported". thx DelleTenebre! :derisive:
http://pccar.ru/showpost.php?p=392461&postcount=1072


"Библиотека" (Либа)

(в архиве new_gps.sun4i.so.zip)
Это обновленная версия либы, теперь в ней исправлен глюк с рестартом. Т.к раньше после сна или переключения устройства, приходилось постоянно ее перезагружать...была проблемма с переинициализацией.

Установка.
1. Кинуть с заменой файлов по пути /system/lib/hw и выставить права 644:
Только возможно потребуется переименовать. Смотрите gps.XXXX.so, где XXXX - название вашей.
gps.glofish.so -не трогать.

Например:
устройства на А10, -это gps.sun4i.so (для стока), gps.exDroid.so (кастом СМ9)
устройства на RK3066, RK3188, Amlogic 8726-MX -это gps.default.so

2. Добавить в автозагрузку команду
Код:

busybox stty -F /dev/ttyUSB0 speed 4800  или  busybox stty -F /dev/ttyUSB0 4800
setprop ro.kernel.android.gps ttyUSB0

где:
4800 - рабочая скорость устройства. (4800, 9600, 14400, 19200, 28800, 38400, 57600 или 115200)
ttyUSB0 - это имя вашего устройства GPS в /dev.
Название может быть другим, например ttyACM0, ttyACM1,....2,3 и т.д.

3. Не забываем выставлять права доступа на gps устройство в /dev !!!!
Код:

chmod 666 /dev/ttyUSB0
Решение некоторых проблем...

1. Проверяем текущую скорость порта командой "busybox stty -F /dev/ttyUSB0"
Потом, выставляется ли скорость командой "busybox stty -F /dev/ttyUSB0 speed 4800"
Бывает такое(зачастую на rk3066), что модуль pl2303.ko уже вкомпилен в ядро, и система не дает изменить скорость....ошибка "cannot perform all requested operations"
Решение нашел и описал подробно macau...читаем инструкцию

2. Если после ввода "cat /dev/ttyUSB0", побежали NMEA данные, либа на месте, но нави-софт не видит спутники:
-Проверяем есть ли пункт: "Настройки -> Местоположения -> По спутникам"
Что бы его добавить нужно:
Создать отсутствующий элемент android.hardware.location.gps.xml в папке \system\etc\permissions со следующим содержимым:
Код:








3. Выключаем сообщение Navitel Navigator 8.0 о безопасном включении:
-для этого добавляем в скрипт автозагрузки
Код:

#
# Navitel Safe Start fix
#
busybox sed -i 's/SafeExit = 0/SafeExit = 1/g' /data/data/com.navitel/settings.001.ini


ЧИТАЕМ ТЕМУ !!! НЕ ЛЕНИМСЯ !! Здесь есть ответы на 98% ваших проблем !!!

Deemon 19.03.2013 19:59

Попробую в субботу на коробочке Mele A2000 и GPS USB BU-353. Тогда и отчитаюсь. И спасибо за труд.

Rage2 25.03.2013 01:14

Вложений: 1
Использовать в крайних случаях...т.к это костыль

А для тех, у кого либа не завелась...или по иным причинам.
Предлагаю попробовать новую версию софта UsbGPS, а именно
UsbGPS4DHoneycomb_MR1 alpha1


В настройках -> Для Разработчиков -> ставим галку "Фиктивные местоположения" (Mock Locations)

Что нового:
Код:

(2013-03-09)
-New version which uses Android SDK USB Host API
-Add auto-conf option for gps baud rate
-Re-enable SiRF options
-Bug fix : correction in SiRF options summary description
-Bug fix : correction in NMEA checksum calcul
-Bug fix : NMEA sentences without checksum weren’t correctly parsed
-Update copyright info in source and about app message

Требуется андройд версии 3.0 и выше (Android SDK version 12)

Из минусов данного способа является то, что навигационные программы не видят количество спутников!!!

macau 25.03.2013 12:07

для rk3066 можно сваять нечто подобное, или там совсем все огорожено?

Rage2 27.03.2013 11:39

Цитата:

Сообщение от macau (Сообщение 252358)
для rk3066 можно сваять нечто подобное, или там совсем все огорожено?

Итак. Либа из шапки работает и на RK3066 с android 4.1.1!!!
Для того, чтобы она загрузилась, ее нужно переименовать в /system/lib/hw/gps.default.so
Работает идеально! =)

_Lexus 27.03.2013 12:02

Цитата:

Сообщение от Rage2 (Сообщение 252707)
Работает идеально! =)

То, что либа работает это хорошо, а вот птичку gps on в UsbGPS приходится вручную переключать?
Как бы сделать, что бы NMEA дрыщь начинался после перезагрузки без дополнительных телодвижений?

Deemon 27.03.2013 14:36

Вопрос такой, почему при втыкании USB GPS BU-353 вообще нет никакой реакции на появление какого-либо устройства? USB же звук появлается ,виден и работает.

Rage2 27.03.2013 14:52

Цитата:

Сообщение от Deemon (Сообщение 252750)
Вопрос такой, почему при втыкании USB GPS BU-353 вообще нет никакой реакции на появление какого-либо устройства? USB же звук появлается ,виден и работает.

Значит в прошивке нет модулей для usb-serial (pl2303.ko, ftdio_si.ko, или cp210x.ko)
Посмотрите реакцию на подключение в логах dmesg.

tsynik 27.03.2013 15:11

Цитата:

Сообщение от _Lexus (Сообщение 252713)
То, что либа работает это хорошо, а вот птичку gps on в UsbGPS приходится вручную переключать?
Как бы сделать, что бы NMEA дрыщь начинался после перезагрузки без дополнительных телодвижений?

Как раз при рабочей библиотеке никаких сторонних программ и птичек, кроме системной о GPS не нужно. Там есть ньюансы по выходу из сна только (может меняться имя физ. устройства например при отключении питания на USB), а либа после переинициализации это может не учитывать.

Deemon 27.03.2013 15:33

Сенкс, нашёл, скачал, запустил. Увиделся как ttyUSB0.


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

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