Просмотр полной версии : Pl2303drv - замена pl2303.ko !
AngelOfGrief
15.06.2013, 19:33
В недрах 4PDA нарыл программку, которая называется pl2303drv. Вкратце суть: выполняет ту же функцию что небезызвестный модуль pl2303.ko, но, соответственно, не является модулем, а посему, не несёт таких громадных неудобств по совместимости как pl2303.ko, который надо иметь скомпилированным под конкретную версию ядра.
Как программа может заменять драйвер? Ну вот так, может. Вот такой он, Linux. :)
В том виде как программа была выложена, у меня она не работала. Выдавала ошибки, а та версия, что я всё же смог запустить, поддерживала только 9600, что мне не подходило. В итоге, я взял исходники, которые автор любезно опубликовал, убрал из программы лишнее, исправил ошибки (в частности, убрал вызовы system(), которые у меня работали некорректно) и дописал некоторые функции. Например, теперь можно указывать желаемое имя порта tty, а также скорость соединения.
Usage:
pl2303drv [имя порта] [скорость]
Указывать только стандартные скорости! :) Пример:
pl2303drv /dev/ttyUSB0 19200
Поддерживается именно PL2303, причём device ID должен быть стандартным для PL2303, т.е. 2303:067b. В принципе, у них у всех он одинаковый. Если
в вашем конвертере помимо PL2303 установлена 8-контактная микросхема flash, скорее всего, в неё и зашит другой ID. Отключите её (5 и 6 ножки) и всё будет хорошо.
Заодно те, у кого происходит постоянная борьба между GPS и модемом за имя порта, смогут навсегда решить свою проблему: вы можете указать порту любое имя какое вам вздумается. Кабель можно втыкать наживую, а затем запускать программу - ей всё равно. Лишь бы девайс присутствовал на момент запуска.
Поскольку программа сама не умеет завершаться, она не удаляет при прерывании созданные порты. Поэтому при каждом запуске она будет их удалять. Программа ведёт лог, в который пишет поток входящих данных. Проверить работу программы можно как обычно командой cat /dev/ttyUSB0
У меня работает отлично. По идее, должна работать на любом девайсе с архитектурой ARM-v7, а это большинство современных девайсов.
Исходник также прилагается, я его компилировал под Linux при помощи кросс-компилятора Sourcery G++, но у него есть и Windows версия, думаю, под виндой тоже при желании скомпилировать можно.
Топик автора программы:
http://4pda.ru/forum/index.php?showtopic=375823&st=40
Я несколько раз обращался к автору, но ответа не получил.
Ссылка на скачку программы - в 4-м посте.
я не очень понял, она же должна висеть в памяти постоянно.
Но это же не демон? Или демон?
Убивает ли ее Андроид через некоторое время?
AngelOfGrief
16.06.2013, 01:57
я не очень понял, она же должна висеть в памяти постоянно.
Но это же не демон? Или демон?
Убивает ли ее Андроид через некоторое время?
По идее, должен убивать, но у меня пока работает, в новом девайсе памяти много. ))
На это тоже есть решение, кто-то писал уже. Нужно поместить прогу в notification area. Для этого есть софтина, название не помню.
Я в любом случае буду работать в направлении компиляции модуля .ko, просто это сложнее намного...
AngelOfGrief
16.06.2013, 02:23
Версия без ведения лога, без вывода на экран статистики. Для улучшения быстродействия. Ещё внутри программы добавлены команды chmod, теперь устанавливать права на /dev/ttyUSB0 в .sh файле не нужно.
AngelOfGrief
17.06.2013, 17:00
По поводу убивания программы андроидом: она провисела в течение 2 суток непрерывно вместе с GPSTest: всё работает. Сейчас попробовал запустить Antutu Test (к-й по идее достаточно много жрёт ресурсов), после его запуска всё продолжает работать. В течение этих 2 дней запускал разные программы, навигацию, плееры, Angry Birds итд итп.
Возможно, причина в том, что созданный виртуальный порт /dev/ttyUSB0 открыт системным процессом (GPS либой). Хотя, не знаю. ))
alex4222
13.09.2013, 14:12
У меня вот что пишет. на любой скорости. и данные не идут в навител (((
со старой версией на 9600 которая все гуд, только скорость 9600 не устраивает.
root@android:/data/test/1 # ./pl2303drv /dev/ttyUSB0 4800
PL2303drv by vovan.v.rum, mod by Ao'Gf
--------------------------------------
Searching for device VID_067b&PID_2303
Found PL2303 device VID_067b&PID2303 (Index=0)
Baudrate requested: 4800
Creating virtual tty. Virtual port: /dev/pts/5
System: unlink /dev/ttyUSB0
System: symlink(/dev/pts/5,/dev/ttyUSB0)
PL2303 serial installed on /dev/ttyUSB0. Type `cat /dev/ttyUSB0` in another shel l window to test.
System: chmod 0666 /dev/pts/5
System: chmod 0666 /dev/ttyUSB0
CTL=0 : CTL=0 : CTL=7 : CTL=7 : CTL=0 :CTL=7 :CTL=0 :BLK=-1 : RD=0xc0 : INT=-1 : RD=0xc0 :CTL=0 :INT=-1 :RD=0xc0 :
err_num - 1
err_num - 1
err_num - 1
err_num - 1
err_num - 1
err_num - 1
err_num - 1
err_num - 1
err_num - 1
err_num - 1
err_num - 1
err_num - 1
err_num - 1
err_num - 1
err_num - 1
err_num - 1
err_num - 1
err_num - 1
err_num - 1
err_num - 1
err_num - 1
err_num - 1
err_num - 1
err_num - 1
^C
130|root@android:/data/test/1 #
alex4222
13.09.2013, 14:16
хотя данные идут
130|root@android:/data/test/1 # cat /dev/ttyUSB0
$GPRMC,091552.742,V,,,,,,,130913,,,N*4F
$GPGGA,091553.742,,,,,0,00,,,M,0.0,M,,0000*5C
$GPGLL,,,,,091553.742,V,N*70
$GPGSA,A,1,,,,,,,,,,,,,,,*1E
$GPRMC,091553.742,V,,,,,,,130913,,,N*4E
$GPGGA,091554.742,,,,,0,00,,,M,0.0,M,,0000*5B
$GPGLL,,,,,091554.742,V,N*77
$GPGSA,A,1,,,,,,,,,,,,,,,*1E
$GPRMC,091554.742,V,,,,,,,130913,,,N*49
$GPGGA,091555.742,,,,,0,00,,,M,0.0,M,,0000*5A
$GPGLL,,,,,091555.742,V,N*76
$GPGSA,A,1,,,,,,,,,,,,,,,*1E
$GPRMC,091555.742,V,,,,,,,130913,,,N*48
$GPGGA,091556.742,,,,,0,00,,,M,0.0,M,,0000*59
$GPGLL,,,,,091556.742,V,N*75
$GPGSA,A,1,,,,,,,,,,,,,,,*1E
$GPRMC,091556.742,V,,,,,,,130913,,,N*4B
$GPGGA,091557.742,,,,,0,00,,,M,0.0,M,,0000*58
$GPGLL,,,,,091557.742,V,N*74
$GPGSA,A,1,,,,,,,,,,,,,,,*1E
^C
130|root@android:/data/test/1 #
AngelOfGrief
13.09.2013, 14:30
Ну если идут, наверное в чём-то другом проблема... А что вы используете в кач-ве драйвера GPS ?
alex4222
13.09.2013, 14:38
Ну если идут, наверное в чём-то другом проблема... А что вы используете в кач-ве драйвера GPS ?
USBGPS. стартует как обычно и девайс прописан /dev/ttyUSB0.
если консоль с прогой закрыть, то не стартует.
синенький кружочек со значками блутуч, связь и спутник
alex4222
13.09.2013, 15:04
http://SSMaker.ru/86578a64/
что то с моим приемником случилось ((( данные принимает, но координату даже в винде не вычисляет. и лампочка красная на нем раньше моргала, а теперь просто горит. что это может быть? приемник BU-353s4 USB
alex4222
13.09.2013, 15:38
Заработало Ураааааааааа. на 4800 )))))) Приемник на подоконнкик положил.
Спасибо огромное за прогу )))))
как бы теперь облегчить запуск этого хозяйства? как можно в андроиде ярлык на скрипт сделать сделать? чтоб он запускал консоль, набирал su и остальное.
AngelOfGrief
13.09.2013, 18:59
Ну поэтому и не работает. Спутники не ловит. Это и в вашем логе видно, я сразу не обратил внимания. Координат-то нет. GPGGA - там координаты должны быть.
А можно объяснить чайнику куда кидать чем открывать по пунктам а то что то не получается
Вроде бы разобрался запускаю в Serial Port ttyUSB0 данные идут а драйвер UsbGps запускается и сразу отваливается в чем дело.....
alex4222
18.09.2013, 10:21
Вроде бы разобрался запускаю в Serial Port ttyUSB0 данные идут а драйвер UsbGps запускается и сразу отваливается в чем дело.....
команда cat /dev/ttyUSB0 показывает данные GPS?
если да, то смотрите настройки драйвера USBGPS - скорость и путь
еще проверьте стоит ли галочка - фиктивное местоположение в разделе разработчика.
Может разработчик скомпилить простенький интерфейс? 1 кнопка - старт и она же стоп. А то у меня прога pl2303drv запускается только со 2-го раза постоянно (планшет всегда полностью выключаю) и на запуск навигатора уходит много времени ((((
команда cat /dev/ttyUSB0 показывает данные GPS
,в драйвере USBGPS также выставил ttyUSB0 скорости у меня нет, запускаешь и через 5 сек выскакивает connection problem
фиктивное местоположение в разделе разработчика галочка стоит
может драйвер не тот какую надо версию?
alex4222
19.09.2013, 14:56
команда cat /dev/ttyUSB0 показывает данные GPS
,в драйвере USBGPS также выставил ttyUSB0 скорости у меня нет, запускаешь и через 5 сек выскакивает connection problem
фиктивное местоположение в разделе разработчика галочка стоит
может драйвер не тот какую надо версию?
http://4pda.ru/forum/dl/post/2363236/ExtGps4Droid.apk я этой пользуюсь.
в этой теме все разжевано http://4pda.ru/forum/index.php?showtopic=375823&st=20
Так я с той темы и перешел. PL2303drv из той темы работает на скорости 9600 а еще надо другой приемник на 38400 завести вылазит Connection problem. Will retry 5 more times before closing
Еще вопрос в папку распаковывать архив в data или создавать папку test и почему вы набираете команду data/test/1# у меня запускается без последнего 1# может это влияет?
Кстати я пользуюсь программой GScriptLite забиваю текст и затем просто запускаю скрипт
alex4222
02.10.2013, 15:53
Так я с той темы и перешел. PL2303drv из той темы работает на скорости 9600 а еще надо другой приемник на 38400 завести вылазит Connection problem. Will retry 5 more times before closing
Еще вопрос в папку распаковывать архив в data или создавать папку test и почему вы набираете команду data/test/1# у меня запускается без последнего 1# может это влияет?
data/test/1/ сюда положил pl2303drv
Можете положить в другое место, но, как я понял, главное на системном разделе. Делается с помощью файлового менеджера с рутовым доступом. Простые файловые менеджеры ничего не видят и не копируют.
dmitry-c
23.06.2014, 18:15
Попробовал тоже такой способ для изменения скорости порта, но не могу запустить прогу вот что выдаёт:
126|root@rk3188:/ # su
root@rk3188:/ # cd data
root@rk3188:/data # cd test
root@rk3188:/data/test # cd 1
root@rk3188:/data/test/1 # ./pl2303drv /dev/ttyUSB0 4800
sh: ./pl2303drv: can't execute: Permission denied
Как быть?
AngelOfGrief
23.06.2014, 19:34
chmod +X pl2303drv
dmitry-c
24.06.2014, 17:24
Вот что выдаёт:
10|root@rk3188:/data/test/1 #su
root@rk3188:/data/test/1 # chmod +X pl2303drv
Bad mode
10|root@rk3188:/data/test/1 #
AngelOfGrief
24.06.2014, 18:00
chmod 0777 pl2303drv
попробуйте так
dmitry-c
24.06.2014, 19:03
chmod 0777 pl2303drv
попробуйте так
Получилось вот что:
1|root@rk3188:/ # su
root@rk3188:/ # cd /data/test/1
root@rk3188:/data/test/1 # ./pl2303drv /dev/ttyUSB0 4800
PL2303drv by vovan.v.rum, mod by Ao'Gf
--------------------------------------
Searching for device VID_067b&PID_2303
Found PL2303 device VID_067b&PID2303 (Index=0)
Baudrate requested: 4800
Creating virtual tty. Virtual port: /dev/pts/2
System: unlink /dev/ttyUSB0
System: symlink(/dev/pts/2,/dev/ttyUSB0)
PL2303 serial installed on /dev/ttyUSB0. Type `cat /dev/ttyUSB0` in another shell window to test.
System: chmod 0666 /dev/pts/2
System: chmod 0666 /dev/ttyUSB0
CTL=0 : CTL=0 : CTL=7 : CTL=7 : CTL=0 :CTL=7 :CTL=0 :BLK=1 : RD=0x56 : INT=-1 :RD=0x56 :CTL=0 :INT=-1 :RD=0x56 :
Перехожу в другое окно терминала набираю:
u0_a67@rk3188:/ $ cat /dev/ttyUSB0
/system/bin/sh: cat: /dev/ttyUSB0: No such file or directory
Перехожу в Рут эксплорер, обновляю директорию /dev и вправду устройства ttyUSB0 нет...
dmitry-c
24.06.2014, 20:18
Перезапустил устройство, по новой запустил прогу, данные на cat /dev/ttyUSB0 пошли, но софт не видит спутники
dmitry-c
24.06.2014, 20:50
Ничего не пойму, один раз получилось увидеть данные, но повторно после перезагрузки опять та же история, устройство пропадает в /dev после запуска программы
AngelOfGrief
24.06.2014, 21:01
Любое другое имя попробуйте. Возможно кто-то параллельно его удаляет.
dmitry-c
25.06.2014, 07:11
В обшем ситуация такая, прога работает, но надо ее запустить дважды, после первого раза устройство /dev/ttyUSB0 исчезает, после повторного запуска появляется, данные cat /dev/ttyUSB0 идут. Если после запуска удалить из USB порта GPS приемник, то при повторном подключении создается устройство в /dev c именем ttyUSB1 (при каждом перевключении следующий ttyUSB2 и т.д.). Но нави софт не работает, спутников нет, параллельно работает терминал и данные есть...
AngelOfGrief
25.06.2014, 13:35
Чтобы нави софт работал, надо запускать ещё доп. софт помимо эмулятора ttyUSB0. Это описано на форуме. Вы сейчас просто организовали поток GPS данных, над его дополнительно обработать чтобы стандартный софт увидел эти данные.
dmitry-c
25.06.2014, 15:07
Чтобы нави софт работал, надо запускать ещё доп. софт помимо эмулятора ttyUSB0. Это описано на форуме. Вы сейчас просто организовали поток GPS данных, над его дополнительно обработать чтобы стандартный софт увидел эти данные.
Я это понимаю, уже отписался в нужной ветке, спасибо.
а что значит "err_num - 1"?
gps спутники видит, там светодиод который загорается после фиксации
по cat /dev/ttyUSB0 вижу поток данных, в том числе и вижу координаты $GPGGA
но постоянно валится эта ошибка и соответсно ничего не работает :(
кстати, стандартные скорости это какие? 38400 это стандартная или нет?
Baikan4ik
20.12.2014, 01:19
кто-нибудь пробовал подружить BananaPI и globalsat bu-353? запускаю pl2303, устройство находится, команда cat выдает координаты, приемник моргает. Но ни одна из программ типа Here Are You, UsbDroid и подобные не видят этот приемник. В SerialApi устройство видится и в консоли данные идут
Vyacheslav
25.02.2015, 01:06
а что значит "err_num - 1"?
Поддерживаю вопрос!
Но при этом у меня все работает. Делаю так:
Прогу загрузил прямо в /data
В теминале запускаю
/data/pl2303drv /dev/ttyUSB0 38400
Далее в новом окне ввожу
busybox stty -F /dev/ttyUSB0 ispeed 38400
busybox chmod 666 /dev/ttyUSB0
setprop "ro.kernel.android.gps" "ttyUSB0"
Потом запускаю перед этим установленную USBGPS4Droid
Все. Яндекс-навигатор, яндекс-карты работают.
Теперь вопрос как это все автоматизировать.
В первом окне терминала постоянно валится эта ошибка "err_num - 1". И если я прерываю прогу, у меня останавливается поток данных.
Как я понимаю в одном скрипте это не сделать...
SanchSanch
25.02.2015, 15:15
Поправил версию проги pl2303drv из 4 поста данной темы.
Она у меня не работала со скоростью 115200, так же не работала передача данных в направлении от хоста к устройству.
Прикладываю скомпилированный бинарник вместе с поправленными исходниками.
Возможно, бинарник у всех не заработает, я не гуру компиляции.
Компилил прямо на устройсве прогой C4Droid из маркета (не реклама), у меня работает.
Почему-то размер бинарника получился вссего 21k против 580k в 4-м посте. Может быть там использовалась статическая компиляция, но как это настроить я не разобрался.
Список изменений:
1. В ф-ции main
1) Исправлен баг с количеством пересылаемых в pl2303 байт (при коммуникации от хоста к устройству). Могло быть одной из причин неработоспособности передачи данных в этом направлении.
2) Уменьшена в 10 раз задержка (usleep) в конце главного цикла - со 150 мс до 15 мс. Одна их причин неработоспособности скорости 115200 (и скорее всего некоторых более низких скоростей тоже). Значение взял "от балды", но вроде помогло.
2. В ф-ции pl2303_open
Исправлен баг с прописыванием сокрости в конфигурационный буфер чипа. Прописывалось только 2 байта, теперь пишется 3 байта. Основная причина неработоспособности сокорости 115200. Т.к. для двух байт максимальное значение скорости могло быть 65535.
3. В ф-ции pl2303_write
Исправлен номер Endpoint, используемой для передачи данных в pl2303 - должно быть 0x02 вместо 0x03. Основная причина неработоспособности передачи данных в направлении от хоста к устройству.
SanchSanch
25.02.2015, 15:23
Поддерживаю вопрос!
Но при этом у меня все работает. Делаю так:
Прогу загрузил прямо в /data
В теминале запускаю
/data/pl2303drv /dev/ttyUSB0 38400
Далее в новом окне ввожу
busybox stty -F /dev/ttyUSB0 ispeed 38400
busybox chmod 666 /dev/ttyUSB0
setprop "ro.kernel.android.gps" "ttyUSB0"
Потом запускаю перед этим установленную USBGPS4Droid
Все. Яндекс-навигатор, яндекс-карты работают.
Теперь вопрос как это все автоматизировать.
В первом окне терминала постоянно валится эта ошибка "err_num - 1". И если я прерываю прогу, у меня останавливается поток данных.
Как я понимаю в одном скрипте это не сделать...
По поводу автоматизации - чтобы скрипт не дожидался завершения программы, а переходил к следующей команде, для бесконечно выполняемых программ нужно в конце добавлять символ & (через пробел, а может и без пробела можно).
То же самое можно делать и при запуске команд вручную в терминале. Но тгда прогу нельзя будет прервать нажатием Ctrl+C, а только командой вида "killall pl2303drv", или "kill NNNN", где NNNN - ID запущенного процесса pl2303drv.
По поводу "errnum - 1". Точно не скажу, но возможно связано с длительностью задержки в конце основного цикла программы. У меня такое кажется было, когда пытался запустить прогу с большими скоростями. Попробуй мою версию из предыдущего поста.
Vyacheslav
26.02.2015, 15:39
Спасибо SanchSanch за столь оперативный ответ, да еще с новой версией проги!
Сегодня попробовал твою версию, у меня почти ни чего не изменилось, так же пишет "errnum - 1", а иногда "errnum - 2" проскакивает.
Ну да ладно, сейчас пытаюсь разобраться со скриптом и пытаюсь понять можно ли обойтись без USBGPG4droid, без ее запуска не работает.
А если пишет что не находит свисток U-blox7? Хотя в USB он появляется как устройство (не TTY).
Андроид 4.0.3 ядро 3.0.8+ VID_1546&PID_01A7
Что делать?
freeloader
01.09.2015, 03:00
Ну да ладно, сейчас пытаюсь разобраться со скриптом и пытаюсь понять можно ли обойтись без USBGPG4droid, без ее запуска не работает.
Получилось отказаться от дополнительной проги?
freeloader
16.09.2015, 01:18
Получилось отказаться от дополнительной проги?
Отвечу для соискателей.
Либа из этой темы: http://www.pccar.ru/showthread.php?t=18871
образно говоря, делает из внешнего GPS-приёмника встроенный.
Гуру, подскажите, у меня валятся три ошибки подряд err_num - 1 err_num - 2 err_num - 3, потом сообщение о том что не может создать pl2303_err из-за того что read-only file system и вылетает, как победить?
Пробовал обе версии из этой темы, ведут себя идентично, на 4pda ссыль мертвая :(
jurik2007
14.07.2016, 11:39
Поправил версию проги pl2303drv из 4 поста данной темы.
Она у меня не работала со скоростью 115200, так же не работала передача данных в направлении от хоста к устройству.
Прикладываю скомпилированный бинарник вместе с поправленными исходниками.
Возможно, бинарник у всех не заработает, я не гуру компиляции.
Компилил прямо на устройсве прогой C4Droid из маркета (не реклама), у меня работает.
Почему-то размер бинарника получился вссего 21k против 580k в 4-м посте. Может быть там использовалась статическая компиляция, но как это настроить я не разобрался.
Список изменений:
1. В ф-ции main
1) Исправлен баг с количеством пересылаемых в pl2303 байт (при коммуникации от хоста к устройству). Могло быть одной из причин неработоспособности передачи данных в этом направлении.
2) Уменьшена в 10 раз задержка (usleep) в конце главного цикла - со 150 мс до 15 мс. Одна их причин неработоспособности скорости 115200 (и скорее всего некоторых более низких скоростей тоже). Значение взял "от балды", но вроде помогло.
2. В ф-ции pl2303_open
Исправлен баг с прописыванием сокрости в конфигурационный буфер чипа. Прописывалось только 2 байта, теперь пишется 3 байта. Основная причина неработоспособности сокорости 115200. Т.к. для двух байт максимальное значение скорости могло быть 65535.
3. В ф-ции pl2303_write
Исправлен номер Endpoint, используемой для передачи данных в pl2303 - должно быть 0x02 вместо 0x03. Основная причина неработоспособности передачи данных в направлении от хоста к устройству.
подойдет на любое ядро с любым процессором?
как ее поставить , раскажи пожалуйцста.
gps - vk172
подойдет на любое ядро с любым процессором?
как ее поставить , раскажи пожалуйцста.
gps - vk172
Присоединяюсь!!!
extreme57
12.05.2021, 22:32
Существует gps usb для андроид которая будет работать без костылей?
Работает на vBulletin® версия 3.8.4. Copyright ©2000-2025, Jelsoft Enterprises Ltd. Перевод: zCarot