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)

gorar 14.03.2014 14:29

Цитата:

Сообщение от s.m. (Сообщение 289873)
Интересно, но NMEA уже должен быть корректным?
Это офигительная вещь для тех у кого есть GPS, но нет батарейки и интернета и после включения время неправильное.
А как быть с часовым поясом?

Если бы работало - было бы "офигительная вещь" но вот неработает. (пока немогу вставить скрин но попробую описать)

После запуска команды
Код:

busybox date -D %H%M%S%d%m%y -s "$(cat /dev/ttyUSB0 |busybox grep -m1 GPRMC | busybox cut -f2,10 -d, | busybox sed -e 's/.000,//')"
терминал подвисает (команда не заканчивает работать).
Немножко разобрался с командами и выяснил что команда ищет в посылках NMEA текст GPRMC. Командой
Код:

cat /dev/ttyUSB0
выяснил что там нет такой строки, а наиболее похожая есть GNRMC. Подставил ее:
Код:

busybox date -D %H%M%S%d%m%y -s "$(cat /dev/ttyUSB0 |busybox grep -m1 GNRMC | busybox cut -f2,10 -d, | busybox sed -e 's/.000,//')"
выдало 2 ошибки:
Код:

sh: cat: : Broken pipe
date: invalid date '083541.600,140314'

с первой я непонял ничего, а вторая ... на сколько я понимаю время и дату с потока вытянуло но наверно там лишний ".600" как минимум.

pine 14.03.2014 14:45

Цитата:

Если бы работало - было бы "офигительная вещь" но вот неработает.
Цитата:

я непонял ничего
Может просто эти два факта как-то между собой связаны, м? :)

А вообще это всего-навсего означает, что ваш GPS не выдает сообщения GPRMC. GPRMC - это сообщения которые есть в NMEA 2.0, предполагаю, что у вас приемник NMEA 4.0, в котором есть сообщения GNRMC.

Дабы не делать наобум неосмыленных действий, просто подменяя строки - для начала почитайте что-нибудь типа нижеследующего про 2.0 и про 4.0

По поводу ошибок - первая это ок, означает, что grep нашел нужную строку и вышел. Может быть подавлена при помощи
Код:

> /dev/null 2>&1
. А вот вторая означает, что sed не вырезал .600,

Путем нехитрых преобразований получаем, что новый код будет выглядеть как

Код:

busybox date -D %H%M%S%d%m%y -s "$(cat /dev/ttyUSB0 |busybox grep -m1 GNRMC | busybox cut -f2,10 -d, | busybox sed -e 's/.600,//')"
либо, если у вас точность до миллисекунды:

Код:

busybox date -D %H%M%S%d%m%y -s "$(cat /dev/ttyUSB0 |busybox grep -m1 GNRMC | busybox cut -f2,10 -d, | busybox sed -e 's/\.[0-9][0-9][0-9],//')"
Проверить, к сожалению, сейчас не могу, но вы мне несколько облегчите жизнь, если пришлете сюда или в личку вывод от команды

Код:

cat /dev/ttyUSB0 |busybox grep -m20 GNRMC

gorar 14.03.2014 15:50

Цитата:

Сообщение от pine (Сообщение 290536)
Может просто эти два факта как-то между собой связаны, м? :)

Ничего не имею против. Я в Unix (и подобным) вообще не работал так что учусь помаленьку по надобности.

Спасибо что откликнулись!

После написания предыдущего поста появилась мысля и я пошел ее проверить. И вот что получилось:
Цитата:

Сообщение от pine (Сообщение 290536)
Путем нехитрых преобразований получаем, что новый код будет выглядеть как
Код:

busybox date -D %H%M%S%d%m%y -s "$(cat /dev/ttyUSB0 |busybox grep -m1 GNRMC | busybox cut -f2,10 -d, | busybox sed -e 's/.600,//')"

Вот это и была моя мысля. Но потом понял что у меня пакеты идут 5 раз на секунду, соответственно эти цыфры меняются: 000 200 400 600 800 000.
В результате нашел решение: добавил до скрипта который запускает сам GPS следующий код:

Код:

sleep 5
busybox date -D %H%M%S%d%m%y -s "$(cat /dev/ttyUSB0 |busybox grep -m1 GNRMC | busybox cut -f2,10 -d, | busybox sed -e 's/.000,//')"
sleep 0.2
busybox date -D %H%M%S%d%m%y -s "$(cat /dev/ttyUSB0 |busybox grep -m1 GNRMC | busybox cut -f2,10 -d, | busybox sed -e 's/.000,//')"
sleep 0.2
busybox date -D %H%M%S%d%m%y -s "$(cat /dev/ttyUSB0 |busybox grep -m1 GNRMC | busybox cut -f2,10 -d, | busybox sed -e 's/.000,//')"
sleep 0.2
busybox date -D %H%M%S%d%m%y -s "$(cat /dev/ttyUSB0 |busybox grep -m1 GNRMC | busybox cut -f2,10 -d, | busybox sed -e 's/.000,//')"
sleep 0.2
busybox date -D %H%M%S%d%m%y -s "$(cat /dev/ttyUSB0 |busybox grep -m1 GNRMC | busybox cut -f2,10 -d, | busybox sed -e 's/.000,//')"

и все работает на УРА!

Спасибо за оптимизацию!
Код:

's/\.[0-9][0-9][0-9],//'
Учусь.

pine 14.03.2014 16:16

Цитата:

Сообщение от gorar (Сообщение 290544)
Ничего не имею против. Я в Unix (и подобным) вообще не работал так что учусь помаленьку по надобности.

Спасибо что откликнулись!

Welcome :)

Цитата:

Сообщение от gorar (Сообщение 290544)
Код:

sleep 5
...

и все работает на УРА!

Избыточно, имхо. То, что ниже


Цитата:

Сообщение от gorar (Сообщение 290544)
Спасибо за оптимизацию!
Код:

's/\.[0-9][0-9][0-9],//'
Учусь.

работает? Писал "из головы".

На самом деле еще хочу вас попросить понаблюдать, стабильно ли выставляется дата-время, если добавлять вызов этого скрипта в /etc/install-recovery.sh?

У меня есть ощущение, что на моем приемнике в случае, если спутники еще не найдены, то выдается "начало времен" 1 января 1970 года. Но проявляется это не каждый раз.

pine 14.03.2014 16:23

Кстати, вот такой код должен работать и с 2.0 и с 4.0

Код:

busybox date -D %H%M%S%d%m%y -s "$(cat /dev/ttyUSB0 |busybox grep -e -m1 "G[NP]RMC" | busybox cut -f2,10 -d, | busybox sed -e 's/\.[0-9][0-9][0-9],//')"
проверить пока что не на чем опять же

gorar 14.03.2014 17:08

Цитата:

Сообщение от pine (Сообщение 290547)
работает? Писал "из головы".

работает, правда немножко сократил из-за ненадобности
Код:

's/\.[0-9]00,//'
Цитата:

Сообщение от pine (Сообщение 290547)
На самом деле еще хочу вас попросить понаблюдать, стабильно ли выставляется дата-время, если добавлять вызов этого скрипта в /etc/install-recovery.sh?
У меня есть ощущение, что на моем приемнике в случае, если спутники еще не найдены, то выдается "начало времен" 1 января 1970 года. Но проявляется это не каждый раз.

У меня какраз работает через этот скрипт, я установил задержку 5 сек после установки драйвера GPS, пока (несколько раз выключал) работает, посмотрим как будет работать после перерывов в несколько часов (суток).

п.с. пересмотрел Ваши ссылки по документации на NMEA и увидел там что есть флаг который отвечает за валидность информации о времени. Можно доработать скрипт на проверку этого флага и установка часов будет только тогда когда данные будут правильными.

DaveMF 15.03.2014 23:25

Добрый день!
подскажите пожалуйста, железо rk3188 + bu-353s4
когда в командной строке выполняю:

echo -n "1-1.2:1.0" > /sys/bus/usb/drivers/option/unbind
insmod /system/lib/modules/pl2303.ko
busybox stty -F /dev/ttyUSB0 ispeed 4800
busybox chmod 666 /dev/ttyUSB0
setprop ro.kernel.android.gps ttyUSB0


по команде cat /dev/ttyUSB0", побежали NMEA данные.
Но когда я все добавляю по инструкции в автозагрузку и перезагружаю устройство, то скорость сама не меняется.
Может кто знает почему?

DaveMF 16.03.2014 11:51

После перезагрузки, по команде busybox stty -F /dev/ttyUSB0 показывает 9600, т.е. автозагрузка не выполнилась.
Кто знает почему?

Rage2 16.03.2014 12:49

Ну может автозагрузка (init.d) у вас не пашет или криво ее пытались поднять....попобуйте другой вариант. (install-recovery)
Смотрите логи командной dmesg, может все работает, а только скорость не выставляется....

DaveMF 16.03.2014 13:15

Цитата:

Сообщение от Rage2 (Сообщение 290692)
Ну может автозагрузка (init.d) у вас не пашет или криво ее пытались поднять....попобуйте другой вариант. (install-recovery)
Смотрите логи командной dmesg, может все работает, а только скорость не выставляется....

Да, действительно, на моем МК908 (rk3188) init.d не работает, а вот создал
install-recovery.sh
c содержимым:
Цитата:

#!/system/bin/sh
echo -n "1-1.2:1.0" > /sys/bus/usb/drivers/option/unbind
insmod /system/lib/modules/pl2303.ko
busybox stty -F /dev/ttyUSB0 ispeed 4800
busybox chmod 666 /dev/ttyUSB0
setprop ro.kernel.android.gps ttyUSB0
положил как по инструкции в /system/etc/install-recovery.sh
и назначил права busybox chmod 755 /system/etc/install-recovery.sh
и все, данные пошли, автозагрузка заработала!!!

Спасибо, Rage2!

phony 16.03.2014 13:18

Здравствуйте. Раньше андроид не видел. Теперь появился на А20. Пытаюсь пристегнуть BU-353. ROOT сделал по инструкции, но при попытке воткнуть в систему драйвер PL2303 выдается сообщение типа что рут для интерактивной оболочки и ничего не меняет. Что это означает и что делать? И еще вопрос. На диске прилагаются драйвера для андроид и файл "makeFail". Написано запустите его и он сам все сделает что нужно. Но он не запускается! и вообще куда его ставить? Прошу подсказать.

DaveMF 16.03.2014 13:43

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

Надпись не появилась, но навигационный софт видит спутники!!!
Спасибо авторам!!!

Rage2 16.03.2014 18:59

Как показывает практика, наличие пункта: "Настройки -> Местоположения -> По спутникам" не является обязательным.
Еще бывает, что отключают gps в файле /system/build.prop командой gps.enable=false, если такой там у вас нет, тогда
можно попробовать добавить туда строку(или изменить false на true)
gps.enable=true
После сохранить, сделать ребут и посмотреть появился ли пункт в меню.

Хотя если все работает, то полагаю можно оставить как есть.

Для MK908, как и многих других Тв-Стиков полно кастомных прошивок, большинство из них делает Finless
Вот ветка его форума по вашему свистку http://www.freaktab.com/forumdisplay...T428-MK908-etc
Поставив кастом, то как правило в них уже есть поддержка директории автозагрузки init.d.

gorar 18.03.2014 15:58

Цитата:

Сообщение от pine (Сообщение 290547)
На самом деле еще хочу вас попросить понаблюдать, стабильно ли выставляется дата-время, если добавлять вызов этого скрипта в /etc/install-recovery.sh?

За несколько дней работы, 2 раза были проблемы с установкой времени (тучи и дождь), наверно приемник еще не успел найти спутники. Но время не менялось вообще (не переходило на начало времен). После софтовой перезагрузки или ручого запуска скрипта сразу все ставало на места. Сегодня поменяю задержку до 30сек думаю за это время должен уже точно все найти.

pine 18.03.2014 16:12

Цитата:

Сообщение от gorar (Сообщение 291090)
За несколько дней работы, 2 раза были проблемы с установкой времени (тучи и дождь), наверно приемник еще не успел найти спутники. Но время не менялось вообще (не переходило на начало времен). После софтовой перезагрузки или ручого запуска скрипта сразу все ставало на места. Сегодня поменяю задержку до 30сек думаю за это время должен уже точно все найти.

У меня стало стабильно работать после sleep 5, до этого задержки не было вообще и работало 4 раза из 5.

Подумаю на выходных по поводу поля A (которое показывает валидные данные). Может быть будет смысл сделать retry на установку времени как-то задействованный на это поле. Надо поисследовать логи гпса. Кстати, если есть лог "с тучами" - будет круто на него посмотреть, особенно на поле валидности.

mr.Iceman 19.03.2014 09:57

Цитата:

Сообщение от AngelOfGrief (Сообщение 262174)
А у меня-то, оказывается, точно такая же проблема. Я просто обычно не пользую Navitel, а заметно это в основном в нём.

Яндекс.Карты - всё ok
Яндекс.Нави - ok
Google.Maps - тоже ok
Google.Navigator - всё ok
Mapcam.Droid - ok, но скорость прыгает 0-3.

В GPS Test которым я обычно пользуюсь для проверки GPS, тоже всё вроде бы хорошо, однако видно, что точность прыгает, а если зайти в отображение высоты, то прыгает раз в секунду то 0 то ~ 550 футов.

В Навителе точно такой же эффект как у Avgaz: иконка спутников попеременно раз в полсекунды меняется с зелёной на красную. В Навителе на странице отображения спутников тоже GPS то включается то выключается и меняются поочередно пункты "высота" и "фикс".

Проверил как с BU353 так и с другим GPS модулем, работающим на другой скорости и с немного отличающимся набором команд. Эффект полностью одинаковый. Разве что при улучшении приёма разброс показаний точности становится меньше.

Коллеги, вышеописанная проблема регулярно вылезает на страницах этой темы. Столкнулся с ней и я. :huh2: К сожалению, ни одного сообщения с описанием причин возникновения этой проблемы и методов её устранения я не нашел. Товарищ Яндекс также не смог мне помочь.
Удалось кому-нибудь победить это мерзкое "включение-выключение GPS" с периодичностью раз в секунду?

s.m. 19.03.2014 13:58

Цитата:

Сообщение от mr.Iceman (Сообщение 291198)
Коллеги, вышеописанная проблема регулярно вылезает на страницах этой темы. Столкнулся с ней и я. :huh2: К сожалению, ни одного сообщения с описанием причин возникновения этой проблемы и методов её устранения я не нашел. Товарищ Яндекс также не смог мне помочь.
Удалось кому-нибудь победить это мерзкое "включение-выключение GPS" с периодичностью раз в секунду?

У меня тоже самое в навителе. Но так как на точность определения не влияет, я не парюсь - видимо это баг в самом навителе
Но возможно, что дело все-таки в нестабильном приеме сигнала со спутников - у меня приемник стоит под торпедой

oledv 23.03.2014 21:47

Андройд 4.2.2
как добавить в настройках пункт меню "Настройки -> Местоположения -> По спутникам"
прописал gps.enable=true, меню нет.
требует IGO

oledv 27.03.2014 10:34

Для тех у кого не появился пункт меню "Настройки -> Местоположения -> По спутникам"

пункт меню "Настройки -> Местоположения" первоначально должен быть отключен.
создаем файл android.hardware.location.gps.xml в папке \system\etc\permissions, назначаем права, перезагружаемся.

все это делалось на чистой системе.

webnet 06.04.2014 21:04

скинте кто нибудь данный файл . cdc-acm.ko

webnet 07.04.2014 11:30

не могу найти драйвер для A10 ядро 3.0.8 для mini pc mk802. купил вот этот GPS http://www.ebay.com/itm/151126069580...84.m1439.l2649

но к нему нужен cdc-acm.ko,где его взять?

oledv 07.04.2014 12:18

Цитата:

Сообщение от webnet (Сообщение 293419)
не могу найти драйвер для A10 ядро 3.0.8 для mini pc mk802. купил вот этот GPS http://www.ebay.com/itm/151126069580...84.m1439.l2649

но к нему нужен cdc-acm.ko,где его взять?

какой конвертер USB-UART вы используете для подключения Skylab Skynav SKM53 GPS ?
на прямую можно только к штатному UART порту подключить если он есть

webnet 07.04.2014 15:46

использую http://pccar.ru/showthread.php?t=20460

Rage2 07.04.2014 15:57

Цитата:

Сообщение от webnet (Сообщение 293360)
скинте кто нибудь данный файл . cdc-acm.ko

:bangin:

webnet, Вы вроде взрослый человек.... Но вот неужели Вам было сложно изложить суть проблемы одним постом? Описать, что имеется, ваша цель и в чем проблема?
А то пока до истины доберешься, постов куча набежит.

Внимание вопрос. У вас версия ядра 3.0.8 или 3.0.8+

webnet 07.04.2014 16:54

андроид 4.0.4

версия ядра 3.0.8

plohish 07.04.2014 22:06

Не могу закрепить права за /dev/ttyACM0 по средствам рутэксплорера, хватает этих прав до первого ребута. В терминале также назначал chmod 666, и посыпались заветные символы после ввода cat /dev/ttyACM0. Но жпс тест не видит данных , пока в рутэксплорере не поправишь . Почему сбиваются, в чем причина?

Rage2 07.04.2014 23:34

Цитата:

Сообщение от plohish (Сообщение 293493)
Не могу закрепить права за /dev/ttyACM0 .....Почему сбиваются, в чем причина?

Причина в том что, права выставляются согласно файлу ueventd.xxxx.rc
В нем описывается на какие устройства системе выставлять права.

Но этот файл просто так не отредактировать, т.к лежит на рамдиске и после перезагрузки он перезаписывается.
Поэтому нужно разобрать boot.img от прошивки, внести нужные изменения, собрать обратно и прошить.

plohish 08.04.2014 07:34

Цитата:

Сообщение от Rage2 (Сообщение 293500)
Причина в том что, права выставляются согласно файлу ueventd.xxxx.rc
В нем описывается на какие устройства системе выставлять права.

Но этот файл просто так не отредактировать, т.к лежит на рамдиске и после перезагрузки он перезаписывается.
Поэтому нужно разобрать boot.img от прошивки, внести нужные изменения, собрать обратно и прошить.

Спасиб, пошел ковырять.
А не получится избежать ковыряния в boot.img, путем прописывания нужных словов в init.d? Ведь скорость мы там задаем, почему бы и права там не прописать. Чтобы выставлялись каждый раз при загрузинге.

Чет меня понесло. Обязательно ли для разбора boot.img иметь на борту Linux или виртуальную машину с ним? Из под винды никак не разобрать?
ОХ, все, амбиции поугасли.

Rage2 08.04.2014 11:11

Да можно и там прописать, только если устройство передернуть в хабе, тогда права на него опять слетят.

Разобрать и правильно потом ообрать, можно только под линь.

plohish 08.04.2014 12:17

Цитата:

Сообщение от Rage2 (Сообщение 293523)
Да можно и там прописать, только если устройство передернуть в хабе, тогда права на него опять слетят.

Разобрать и правильно потом ообрать, можно только под линь.

Но ведь после следующего ребута они восстановятся по средствам записи в init.d? Этот вариант все же лучше, чем в ручную тыкать.

webnet 08.04.2014 15:13

Цитата:

Сообщение от webnet (Сообщение 293470)
андроид 4.0.4

версия ядра 3.0.8

модуль для MT3329 . а тут в начале темы, для 3.0.8 + только

где вообще брать эти модули

Rage2 08.04.2014 17:22

plohish, Все верно.
Цитата:

Сообщение от webnet (Сообщение 293543)
где вообще брать эти модули

Да нигде, таких мест не существует.
Либо искать в сети, может быть кто-то делал для себя и выложил...либо компилить самому...как вариант попросить того, кто может это сделать..

webnet 08.04.2014 17:46

а на каком ядре и прошивки gps будет работать хорошо без проблем?

Rage2 08.04.2014 19:49

Нельзя сказать наверняка... будет работать или нет.
Дело такое....специфичное. Все ядра и прошивки индивидуальные...для каждой железки они свои.

plohish 09.04.2014 07:25

Цитата:

Сообщение от plohish (Сообщение 293515)
Спасиб, пошел ковырять.
А не получится избежать ковыряния в boot.img, путем прописывания нужных словов в init.d? Ведь скорость мы там задаем, почему бы и права там не прописать. Чтобы выставлялись каждый раз при загрузинге
.

не срабатывает вариант с записью chmod 666 /dev/ttyACM0 в init.d. может чего-то не хватает, какого нибудь параметра?

вот на всякий случай его содержимое

#!/system/bin/sh
#
insmod /system/lib/modules/cdc-acm.ko
stty -F /dev/ttyACM0 speed 115200
setprop "ro.kernel.android.gps" "ttyACM0"
chmod 666 /dev/ttyACM0
insmod /system/lib/modules/snd-hwdep.ko
insmod /system/lib/modules/snd-rawmidi.ko
insmod /system/lib/modules/snd-usbmidi-lib.ko
insmod /system/lib/modules/snd-usb-audio.ko

echo "done USB Audio Modules Autoload"

plohish 09.04.2014 14:31

Спасибо всем, решили вопрос с автоматическим выставлением прав 666 на /dev/ttyACM0 . Содержание файла автозагрузки таково:

#!/system/bin/sh
#
insmod /system/lib/modules/cdc-acm.ko
stty -F /dev/ttyACM0 speed 115200
setprop "ro.kernel.android.gps" "ttyACM0"
sleep 50
chmod 666 /dev/ttyACM0
insmod /system/lib/modules/snd-hwdep.ko
insmod /system/lib/modules/snd-rawmidi.ko
insmod /system/lib/modules/snd-usbmidi-lib.ko
insmod /system/lib/modules/snd-usb-audio.ko

echo "done USB Audio Modules Autoload"

ну и в воткнуть приемник в хаб, в порт №1

dmitry-c 27.04.2014 11:24

Задался решением подключить планшет Vido N90FHD (проц Allwinner A31 ядро 3.3.0 ведроид 4.2.2) и gps usb (noname) на базе MTK3329, ни один драйвер cdc-acm.ko из шапки не заработал (пусто в lsmod), видимо не для этой платформы. Может у кого нибудь есть нужный драйвер?

Rage2 27.04.2014 13:07

Цитата:

проц Allwinner A31 ядро 3.3.0.......ни один драйвер из шапки не заработал....видимо не для этой платформы.
Вы прям капитан очевидность. =)

dmitry-c 27.04.2014 13:44

Цитата:

Сообщение от Rage2 (Сообщение 295484)
Вы прям капитан очевидность. =)

Извиняюсь :blush:

Rage2 27.04.2014 14:38

dmitry-c, вам нужно найти на 4пда самую активную ветку по Allwinner A31, искать и спрашивать там. Попросите там местных ромоделов собрать вам модуль.
Просто я сомневаюсь, что тут найдется тот, кто сможет вам помочь.
Так же смотреть форумы xda, slatedroid.


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

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