PDA

Просмотр полной версии : Номер порта в /dev/ttyUSB


ak1976
18.02.2013, 16:56
В машине установлен медиабокс Mele A2000, к нему по USB подлючен USB-GPS GlobalSat BU-353 и 3G модем от МТС, в ближайшее время к ним добавится адаптер AVC-Lan на ардуино.
Все эти устройства создают файлы /dev/ttyUSBx
Но вот как управлять этим процессом? Т.е. задать чтобы допустим 3G можем всегда создавал файлы /dev/ttyUSB0-3, USB-GPS /dev/ttyUSB10, arduino /dev/ttyUSB20.
Сейчас на каждое устройство в адроиде настроен свой конфиг, где прописаны файлы устройств, и удаление, например, 3G модема приводит к неработоспособности всех устройств, т.к. номера файлов сдвигаются.

macau
18.02.2013, 17:19
через правила udev

ak1976
18.02.2013, 17:37
через правила udev

На udev я натыкался, когда искал. Но тут (http://stackoverflow.com/questions/6024917/a-way-to-edit-udev-rules-on-android-device) и тут (http://www.linuxquestions.org/questions/linux-mobile-81/what-is-the-udev-in-android-832703/#post4358932) написано, что udev не используется в android.
каталога /etc/udev у меня на mele тоже нет.

macau
18.02.2013, 20:28
действительно. видимо гугл посчитал, что пользователю ненужен хост, и все ноды создаст вендор. они наркоманы

macau
18.02.2013, 20:44
и да, у меня же все девайсы тоже сериал, предчувствую тот же онанизм с нодами.
Немного погулил-сейчас используется uevent. Но, похоже он никак не конфигурится из юзерспейса(точнее можно задать права на ноду и что-то выполнить (on-device-add-/dev/*) в init*.rc)
http://www.opendebug.com/article/538937

tsynik
19.02.2013, 06:56
Действительно, с нумерацией USB не все гладко. Я решил это подключая GPS на MTK (LS23030 (http://pccar.ru/showthread.php?t=14962)), который определяется и работает через CDC_ACM драйвер, соответственно как /dev/ttyACM0 устройство. А модем повесил на роутер TP-Link MR3020 и соединяюсь по wi-fi ) При таком раскладе на /dev/ttyUSB останется только ардуино.

ak1976
19.02.2013, 08:15
Пока единственный вариант, на мой взгляд, поправить модули ядра pl2303 и ftdi_sio.
DmitrySmol писал тут (http://pccar.ru/showpost.php?p=232072&postcount=2042), что пересобирал модуль ядра cdc-acm. У него правда порт жестко забит, но если сделать, чтобы свободный порт искался с заданного значения - получим то, что нужно (пока не попадется два устройства на одинаковом usb-serial конвертере).
Написал ему в личку, надеюсь подскажет чего он правил.

ak1976
27.01.2014, 18:51
Как вариант решения проблемы, костыль конечно, но рабочий.
Можно определять номер порта по файлу /proc/tty/driver/usbserial
и создавть символические ссылки на выделенный номер /dev/ttyUSB

Пример моего файла /system/etc/install-recovery.sh

#!/system/bin/sh
/system/bin/insmod /system/vendor/modules/pl2303.ko
/system/bin/insmod /system/vendor/modules/ftdi_sio.ko
/system/bin/sleep 5


gpsnum=`/system/bin/busybox grep pl2303 /proc/tty/driver/usbserial | /system/bin/busybox awk -F: '{print $1}'`
if [ -e /dev/ttyUSB$gpsnum ]; then
if [ -L /dev/ttyUSB20 ]; then
/system/bin/busybox rm /dev/ttyUSB20
fi
/system/bin/busybox ln -s /dev/ttyUSB$gpsnum /dev/ttyUSB20
/system/bin/busybox stty -F /dev/ttyUSB$gpsnum ispeed 4800
/system/bin/setprop "ro.kernel.android.gps" "ttyUSB20"
fi

GPS приемник всегда будет цепляться к /dev/ttyUSB20
аналогичным образом был сделан и модем, но в последнее время он переехал на TP-Link MR3020, а скрипт при перпрошивке потерялся. Но сама идея думаю понятна. Может кому пригодится.

Rage2
27.01.2014, 19:16
ak1976, ОГО! =) Костыль конечно....но крутой)) Молодца что поделился, может кому будет полезно.

Трек
18.02.2014, 00:18
Как вариант решения проблемы, костыль конечно, но рабочий.
Можно определять номер порта по файлу /proc/tty/driver/usbserial
и создавть символические ссылки на выделенный номер /dev/ttyUSB

Пример моего файла /system/etc/install-recovery.sh

#!/system/bin/sh
/system/bin/insmod /system/vendor/modules/pl2303.ko
/system/bin/insmod /system/vendor/modules/ftdi_sio.ko
/system/bin/sleep 5


gpsnum=`/system/bin/busybox grep pl2303 /proc/tty/driver/usbserial | /system/bin/busybox awk -F: '{print $1}'`
if [ -e /dev/ttyUSB$gpsnum ]; then
if [ -L /dev/ttyUSB20 ]; then
/system/bin/busybox rm /dev/ttyUSB20
fi
/system/bin/busybox ln -s /dev/ttyUSB$gpsnum /dev/ttyUSB20
/system/bin/busybox stty -F /dev/ttyUSB$gpsnum ispeed 4800
/system/bin/setprop "ro.kernel.android.gps" "ttyUSB20"
fi

GPS приемник всегда будет цепляться к /dev/ttyUSB20
аналогичным образом был сделан и модем, но в последнее время он переехал на TP-Link MR3020, а скрипт при перпрошивке потерялся. Но сама идея думаю понятна. Может кому пригодится.


Привет! Можете поподробнее описать, что куда ставить( изменять) и как...., желательно побольше подробностей... а то у меня меле м3, на одном юсб тач висит, на втором 353-gps, ну и свободный юсб тоже под флешки будет юзаться, сейчас проблема с gps пока....

ak1976
21.02.2014, 17:44
Привет! Можете поподробнее описать, что куда ставить( изменять) и как...., желательно побольше подробностей... а то у меня меле м3, на одном юсб тач висит, на втором 353-gps, ну и свободный юсб тоже под флешки будет юзаться, сейчас проблема с gps пока....

В данном случае проблем с номерами портов быть не должно. Нужно просто подключить GPS
Вот тут подробная статья про подключение gps http://4pda.ru/forum/index.php?showtopic=321133&st=1580#entry13962835
Вот тут я писал свои измышления по этому поводу https://www.dropbox.com/sh/coevlufxh0dgyuq/4qRLsF76ZH

Только вот это все написано для ядра 3.0.8+
Если я правильно понимаю, то в меле м3 другое ядро и файлы gps.sun4i.so и pl2303.ko нужны под это ядро.

Трек
21.02.2014, 21:43
там проц А20, 1 гиг оперативки, и 4 гига флеши, стоит андройд 4, и хочется чтобы gps работало всегда, чтоб лишних кнопочек не нажимать