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.

Deemon 27.03.2013 16:48

BU-353 благополучно запустился. Ручками пока запускал через терминал. Тем же терминалом читаю данные ,идущие с GPS-мыши. Но UsbGPS4Honeycomb_MR1_alpha1 не видит приёмника. Навигация 7дорог тоже не видит приёмника. Где я ещё чего не сделал?

Rage2 27.03.2013 17:45

Зачем юзать эти костыли с софтом??? Чем вас либа не устраивает... Читаем шапку темы!!!

Deemon 27.03.2013 22:49

'Либа' была установлена, как в шапке и говорилось. Единственный файл из архива был прописан точно по инструкции. То что делал ручками, это скорее от неопытности, чтобы понять процесс. Данные -то с приёмника я получаю, значит всё правильно подключил и прописал.
Что я упустил? Софт приёмника не видит, кроме видимости из терминала.

Подозреваю, что виновата прошивка , т.к. запускаю GPS на HTPC Mele A2000, это урезанное устройство и прошивка сильно легче планшетной. Может тут собака порылась?

Rage2 28.03.2013 00:01

Дело не в прошивке...а в неопытности...
Еще раз говорю, прога usbgps не нужна. Не видит, значит она не работает....в названии слово alfa вам ни о чем не говорит? Альфа..еще хуже бетты.

Права 666 или 777 на ttyUSB0 выставляли?
Настройки>мое местоположение>по спутникам гпс ...такая галка есть???

tsynik 28.03.2013 00:47

Вложений: 1
Софт для проверки получения андроидом NMEA: NMEAGPSClock. Программа должна показывать NMEA значения. Если нечего нет - библиотека не работает / не включен GPS в настройках / не правильно настроено имя устройства GPS

Иногда для корректной работы необходимо устанавливать скорость через stty (если это не реализовано в библиотеке).

busybox stty -F /dev/ttyUSB0 speed 9600
# ^^^ Change the 9600 value for the apropiate for your gps device ( in some cases it would be 4800, 38400 or 57600 )

Deemon 28.03.2013 10:05

Права 666 или 777 на ttyUSB0 выставляли? - Выставил ,т.е. всё галками отметил.
Настройки>мое местоположение>по спутникам гпс ...такая галка есть??? - Такой галки нет. Сторонние включалки GPS или не работают или ничего не делают.

Для tsynik'а ещё раз повторю, в терминале я вижу поток данных с приёмника.

tsynik 28.03.2013 11:03

Цитата:

Сообщение от Deemon (Сообщение 252859)
Права 666 или 777 на ttyUSB0 выставляли? - Выставил ,т.е. всё галками отметил.
Настройки>мое местоположение>по спутникам гпс ...такая галка есть??? - Такой галки нет. Сторонние включалки GPS или не работают или ничего не делают.

Для tsynik'а ещё раз повторю, в терминале я вижу поток данных с приёмника.

Mele 2000 - это A10. Для A10 должно быть море балтийское прошивок, включая CM9/CM10. У последних точно есть поддержка GPS в ROM. Если данные в терминале видны - значит драйвер устройства работает, к Андроид и видимости GPS в системе это никакого отношения не имеет. Если настройки местоположения в системе нет, значит без смены ROM возможно a) Включить поддержку фиктивных местоположений в настройках для разработчика б) Передать эти данные из драйвера в систему сторонним софтом. Вариантов софта не один и даже не два. Либа в этом не поможет.

Deemon 28.03.2013 11:18

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

Rage2 28.03.2013 14:11

Цитата:

Сообщение от Deemon (Сообщение 252868)
Возможно ,что отсутствие варианта включения фиктивных местоположений и есть та засада. Буду проверять это других прошивках.

Да погодите вы искать прошивки...

Зачем вам искать вариант включения фиктивных местоположений??
Это нужно только для софта..мы пытаемся обойтись без него...потому как это кривой костыль!

ррррррр....Фсю тему засрали...а профита ни какова =(

Deemon 28.03.2013 14:18

Почему же профита никакого? Я научился кое-чему. Запустил конкретный GPS девайc на конкретной железке. Осталось сделать так, чтобы навигационные программы видели GPS-мышь.

macau 28.03.2013 16:56

setprop ro.kernel.android.gps ttyUSB0 делал?

Deemon 28.03.2013 20:53

а то! всё уже почти работает, осталось найти скрытый пункт настроек 'местоположение'. При запуске настроек такого пункта нет, а при включении GPS с помошью виджета, этот пункт появляется и в нём можно ставить 'галку' . Нави-прога 7дорог стала видеть приёмник, но чтоб увидеть спутники, это надо вынести за дверь, т.к. внутри здания даже у окна спутники не видны. Cпасибо за науку Rage2. Пытаемся разобраться дальше.

Deemon 28.03.2013 20:57

Вложений: 1
to Rage2. Чтоб не мучиться, выкладываю директорию тут.

Deemon 02.04.2013 12:27

Отчёт по подключению USB GPS BU-353 к HTPC Mele A2000 на облегчённой прошивке с отсутствием поддержки GPS.
Библиотека gps.exdroid.so уже была в прошивке. Драйвер PL2303.ko был скачан и установлен в /system/vendor/modules и подключен командой insmod /system/vendor/modules/pl2303.ko . Далее был создан отсутствующий элемент android.hardware.location.gps.xml в папке \system\etc\permissions со следующим содержимым
Цитата:










Не забываем в разрешениях файлов ставить галки по аналогии с соседними.
Не забываем
Цитата:

stty -F /dev/ttyUSB0 speed 9600
setprop ro.kernel.android.gps ttyUSB0
и командой cat /dev/ttyUSB0 читаем поток данных с приёмника.
Далее установил простую бесплатную навигашку 7дорог. Но программа сказала,что устройство не подключено. Дело оказалось в том,что в системном меню настройки напрочь отсутсвовал пункт 'Моё местоположение', т.е. для софта приёмник был изначально отключён. Для включения приёмника была сперва использована отдельная включалка-выключалка GPS, но потом из другой прошивки , где меню настройки было полным, а не усечённым, как в облегчённой прошивке, было выдернуто системное приложение Settings.apk и им заменено усечённое меню. Всё стало на свои места.
Вроде бы ничего не забыл.
За помощь совсем неопытному исследователю Андроида отдельное спасибо Rage2.
Прошивка для Mele A2000 облегчённая http://narod.ru/disk/64933224001.8ea..._V0.1.img.html
Драйвер для PL2303 http://yadi.sk/d/gAJVbcPG3kcrQ
Системные настройки http://yadi.sk/d/-VQUBDli3kcqr на Mele заменить этим приложением родное Tdvsetting.apk

Vl@dK 03.04.2013 15:34

Господа, подскажите как запустить BU-353 в Андроид Х86.
Хочу попробовать на существующем карпс.

m50b20 05.04.2013 01:02

Вопрос такой:

имеем планшет Ainol Aurora II

USB GPS Locosys 23030

работает через приблуду USBGPS (автостарт)

так вот, если включить планшет - то навигационные проги не видят данные, пока не запустишь и не закроешь программу serialport (показывает, какие данные по портам идут)

tsynik 05.04.2013 04:03

Цитата:

Сообщение от m50b20 (Сообщение 254127)
USB GPS Locosys 23030

так вот, если включить планшет - то навигационные проги не видят данные, пока не запустишь и не закроешь программу serialport (показывает, какие данные по портам идут)

Взможно, необходима инициализация скорости порта, которую USBGPS не делает. команда "stty -F ..." перед или после старта USBGPS должна помочь

Цитата:

Сообщение от Deemon (Сообщение 253676)
Отчёт по подключению USB GPS BU-353 ...
stty -F /dev/ttyUSB0 speed 9600

У меня с этим модулем была след. проблема: он по-умолчанию настроен на 4800 а не 9600, так что измененная скорость (через SIFR demo) сбрасывалась после недели-двух неиспользования в 4800, и скрипты переставали работать. Так что я настраивал его на 4800 устанавливая это значение с помощью stty.

m50b20 05.04.2013 15:31

Цитата:

Сообщение от tsynik (Сообщение 254139)
Взможно, необходима инициализация скорости порта, которую USBGPS не делает. команда "stty -F ..." перед или после старта USBGPS должна помочь

"stty -F..." - что вместо многоточия ? :blush:

macau 05.04.2013 16:51

выше поднять глаза не?

m50b20 05.04.2013 17:32

Цитата:

Сообщение от macau (Сообщение 254222)
выше поднять глаза не?

спасибо )

Подскажите, пожалуйста, а где, собственно, это прописать в автозагрузке, в смысле, где этот файл лежит, который править надо ?

Rage2 07.04.2013 12:21

Цитата:

Сообщение от m50b20 (Сообщение 254231)
спасибо )

Подскажите, пожалуйста, а где, собственно, это прописать в автозагрузке, в смысле, где этот файл лежит, который править надо ?

Скрипты для автозагрузки лежат в /system/etc/init.d
Если такой папки нет, тогда все сложнее...

s.m. 07.04.2013 13:30

Цитата:

Сообщение от Rage2 (Сообщение 254374)
Скрипты для автозагрузки лежат в /system/etc/init.d
Если такой папки нет, тогда все сложнее...

если нет, то могут работать варианты с /system/etc/install-recovery.sh или /system/etc/preinstall.sh (в этом не уверен, такое на телах с мтк бывает). ну и конечно, usbgps4droid с автозапуском скриптов, где-то здесь выкладывал

tsynik 07.04.2013 14:43

Цитата:

Сообщение от s.m. (Сообщение 254382)
если нет, то могут работать варианты с /system/etc/install-recovery.sh или /system/etc/preinstall.sh (в этом не уверен, такое на телах с мтк бывает). ну и конечно, usbgps4droid с автозапуском скриптов, где-то здесь выкладывал

Достаточно прочитать init.* в корне. Там описано все что пытается запускаться ;-) Трик с отсутствующим install-recovery.sh работал еще на книжках с Android 2.1. Можно так же чем-нибудь ненужным принебречь )))

m50b20 10.04.2013 16:26

Можете конкретно написать куда вставить эту строчку ?

стоит USBGPS

Rage2 12.04.2013 12:32

Цитата:

Сообщение от Rage2 (Сообщение 254374)
Скрипты для автозагрузки лежат в /system/etc/init.d
Если такой папки нет, тогда все сложнее...

Что бы поднять в прошивке директорию автозагрузки /etc/init.d :
Для начала должны быть установлены root и busybox.

Далее следуя инструкции...
1. находим скрипт /system/bin/preinstall.sh, если его нет, тогда пробуем создать.
2. Добавляем в него строку.
Код:

#!/system/bin/sh
exec /system/bin/logwrapper busybox run-parts -a start /system/etc/init.d

3. Создаем папку /system/etc/init.d
Для этого набрать в терминале
Код:

mkdir /system/etc/init.d
chmod 755 /system/etc/init.d

4. Далее надо создать по вышеназванному пути файл, назвав его например 01myscript.
Хочу отметить, что скрипты выполняются по порядку, то есть сначала выполняется 01myscript, потом 02myscript и так далее.
Созданный файл не должен иметь никакого расширения, (даже .sh), но должен иметь права на исполнение(755).
Права можно дать через Root Explorer или через эмулятор терминала при его наличии в прошивке.
Код:

chmod 755 /system/etc/init.d/01myscript
5. Пример содержимого скрипта 01myscript для автозагрузки нужного модуля.
Код:

#!/system/bin/sh
insmod /system/lib/modules/my_super_module.ko


slyman88 12.04.2013 12:34

Прошу помощи! Ответьте пожалуйста!
 
День добрый! В Андроиде не давно поэтому заранее прошу понять и простить. Из выше прочитанного понял не много. У меня имеется IconBit Toucan Duo Plus на оболочке Андройд 4. Подготовки или еще чего либо под GPS отсутствуют на прочь. Хочу прикрутить USB GPS приемник GlobalSat BU 353. Из темы спутники поймал только с помощью UsbGPS4DHoneycomb_MR1 alpha1, но постоянно после выключения необходимо ставить и убирать галочку Start\Stop GPS в программе. Как бы мне все сделать без лишних телодвижений: включил и работает.

stty -F указывает скорость устройства?
setprop ro.Kernel.android.gps - c этим не очень понятно
chmod 666 или 777 - Подкл. необходимый модуль(драйвер)
Модули GPS: pl2303.ko, ftdio_si.ko,cp210x.ko
Какой еще набор файлов нужен для полного комплекта?
куда файлы кидать?
Какие команды?

Помогите собрать мысли в кучу короче!!!

Rage2 12.04.2013 13:46

Цитата:

Сообщение от slyman88 (Сообщение 255217)
Какой еще набор файлов нужен для полного комплекта?
куда файлы кидать?
Какие команды?
Помогите собрать мысли в кучу короче!!!

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

Эрик 17.04.2013 00:16

Может кто сталкивался с подобной ситуацией..
У меня на планшете при подключении GPS на PL2303 появляется устройство /dev/ttyUSB0, однако не работает, возможно кривой драйвер в ядре.
Нашел в просторах нужный драйвер pl2303.ko, подключаю его insmod'ом и все работает, но есть одно но. При перезагрузке планшета устройство /dev/ttyUSB0 создается до подгрузки нормального драйвера и, естественно, ничего не работает, приходится перетыкать устройство и тогда все работает.
Вычитал, что можно программно "переткнуть" юсб устройство путем записи suspend в /sys/bus/usb/devices/2-1.4/usb_device/usbdevice/usbdev2.4/power/level, однако файла level у меня нет, и соответственно, я не могу управлять им, есть только control, но записать в него не удается, точнее ничего не меняется.
Может у кого есть какие идеи, как передернуть юсб при перезагрузки планшета, можно конечно заколхозить аппаратный передергиватель, но это немного грубовато, да и не эстетично, и кто-то должен ему сообщать что планшет ребутнулся...

DmitrySmol 17.04.2013 00:23

Эрик,
что за планшет? какая прошивка?
научится собирать ядро, убрать "кривой" поставить правильный.
тупо команды: "хочу gps" нету.

P.S. если "кривой" виден в lsmod, то можно пробывать скриптами в авто-загрузке. rmmod и insmod.

Эрик 17.04.2013 13:33

Цитата:

Сообщение от DmitrySmol (Сообщение 255748)
Эрик,
что за планшет? какая прошивка?
научится собирать ядро, убрать "кривой" поставить правильный.
тупо команды: "хочу gps" нету.

P.S. если "кривой" виден в lsmod, то можно пробывать скриптами в авто-загрузке. rmmod и insmod.

Да никто и не претендует на "хочу gps". Я просто обращаюсь за советами, и не требую готовых решений :)
Планшет на RK3066, Nextway F7. Ядро 3.0.8+
К сожалению, "кривой" драйвер не виден в lsmod, я бы справился с такой задачей...


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

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