Инструкция для подключения внешнего 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!
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 со следующим содержимым:
Код:
<?xml version="1.0" encoding="utf-8"?>
<!-- These are the location-related features for devices that include GPS. -->
<permissions>
<feature name="android.hardware.location" />
<feature name="android.hardware.location.network" />
<feature name="android.hardware.location.gps" />
</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% ваших проблем !!!