FT232RL и Linux: проблема подключения

Подключаем наши девайсы к компьютеру. Обсуждаются: порты, протоколы, драйвера, языки программирования и т.д.
Ответить
Открыл глаза
Аватара пользователя
Сообщения: 69
Зарегистрирован: Пн мар 18, 2013 13:24:56
Откуда: Нальчик

Сообщение kursant1986 »

Доброго дна суток.

Помогите мне пожалуйста с такой проблемой. Решил я сделать устройство которое будет управляться с ПК через виртуальный COM порт. Но что бы это все происходило под Линуксом (KDE 13.04). Взял для этих целей (впрочем как и многие) FT232RL, собрал как в даташите показано, привентил к ней контроллер, проверил что бы все правельно было.
После того как я был уверен что все собрано правильно и ни где нет соплей всунул все это дело в комп. Линукс увидел эфтиху, как надо, но когда начал пробровать общаться с ней ,комп выдовал что неможет открыть устройство. Думал микруха дохлая, начал пробовать и заводской USB-COM адаптер и у друга брал, по его словам рабочий, все попрежнему. На венде работает, но мне надо чтоб на Линоксе. Может кто то стыкался с такой проблемой и решил ее? Тогда подскажите решить ее.
«Достоинства человека должны определяться его делами, а не тем, что о нем говорят»
Томас Эдисон
Реклама
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 2361
Зарегистрирован: Вс янв 09, 2011 16:51:39
Откуда: Санкт-Ленинград

Сообщение Dmitry Dubrovenko »

Полагаю, лучше искать на профильном форуме, как работать с ком-портами.
Хотя, ведь у ФТДАй есть же, вроде, специальные драйвера под Линь... :roll:
ICQ нет, и, в ближайшее время, не будет.
Контактная информация:
Реклама
Друг Кота
Аватара пользователя
Сообщения: 4905
Зарегистрирован: Чт апр 11, 2013 11:19:59
Откуда: Минск

Сообщение WiseLord »

А что значит "не работает"?

По идее, он должен был определиться в системе как-то вроде /dev/ttyUSB0.

Тем же picocom-ом подключиться и слать/принимать байты:

picocom -b 115200 /dev/ttyUSB0
Контактная информация:
Друг Кота
Аватара пользователя
Сообщения: 3385
Зарегистрирован: Пн окт 11, 2010 19:00:08

Сообщение Мурик »

Открывать порт нужно с правами рута. Такая вот тупая политика линукса.
Реклама
Эиком - электронные компоненты и радиодетали
Открыл глаза
Аватара пользователя
Сообщения: 69
Зарегистрирован: Пн мар 18, 2013 13:24:56
Откуда: Нальчик

Сообщение kursant1986 »

Вот что пишет мне picocom:

oleg@oleg:~/mega/sensor/uart/Release$ sudo picocom -b 9600 dev/tty/ttyUSB0
picocom v1.7

port is : dev/tty/ttyUSB0
flowcontrol : none
baudrate is : 9600
parity is : none
databits are : 8
escape is : C-a
local echo is : no
noinit is : no
noreset is : no
nolock is : no
send_cmd is : sz -vv
receive_cmd is : rz -vv
imap is :
omap is :
emap is : crcrlf,delbs,


FATAL: cannot open dev/tty/ttyUSB0: No such file or directory
Но если посмотреть подключеные USB устройства, то вот:

oleg@oleg:~/mega/sensor/uart/Release$ lsusb
Bus 002 Device 002: ID 046d:c05b Logitech, Inc. M-U0004 810-001317 [B110 Optical USB Mouse]
Bus 002 Device 003: ID 1c4f:0002 SiGma Micro Keyboard TRACER Gamma Ivory
Bus 002 Device 063: ID 0403:6001 Future Technology Devices International, Ltd FT232 USB-Serial (UART) IC
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
oleg@oleg:~/mega/sensor/uart/Release$
«Достоинства человека должны определяться его делами, а не тем, что о нем говорят»
Томас Эдисон
Реклама
Друг Кота
Аватара пользователя
Сообщения: 4905
Зарегистрирован: Чт апр 11, 2013 11:19:59
Откуда: Минск

Сообщение WiseLord »

Возможно, порт не ttyUSB0, а как-то иначе называется. Например, ttyACM0.

Посмотрите в dmesg, после втыкания в USB.

Или в реальном времени в консоли tail -f /var/log/messages

P.S. И да, не dev/tty..., а /dev/tty... Если не из корневого каталога, конечно, запускается.
Мурик писал(а):Открывать порт нужно с правами рута. Такая вот тупая политика линукса.
Не выдумывайте, такое только в windows. Для доступка к порту пользователю достаточно быть в группе tty.
sudo gpasswd -a имя_пользователя tty
Последний раз редактировалось WiseLord Пт янв 24, 2014 15:46:20, всего редактировалось 1 раз.
Контактная информация:
Реклама
Друг Кота
Аватара пользователя
Сообщения: 3385
Зарегистрирован: Пн окт 11, 2010 19:00:08

Сообщение Мурик »

WiseLord писал(а):Не выдумывайте, такое только в windows.
В винде как раз доступ к COM порту не ограничивается и его можно открыть даже под гостевой учеткой.
А в лине, нужны повышенные права хз зачем? Реально COM порт может быть дырой в безопасности ОС? Тогда почему для доступа в сеть (в т. к. инет) не нужны права рута? Ведь это реальная дыра в безопасности!
Короче в линукс с доступом к COM порту логики нет.
WiseLord писал(а):sudo gpasswd -a имя_пользователя_tty
И для этого нужен пароль рута!
Друг Кота
Аватара пользователя
Сообщения: 4905
Зарегистрирован: Чт апр 11, 2013 11:19:59
Откуда: Минск

Сообщение WiseLord »

Не в курсе, как это _сейчас_ в windows, но, помнится, когда я ещё ей пользовался, году в 2004, мне захотелось приспособить в 5-дюймовый отсек дисплей 2х16, под программку LCD_Smartie. Всякие параметры системы отображать, информацию о песне из винампа увидеть. Так вот, чтобы работать с LPT (не COM, может в этом дело?) портом, дабы программа могла напрямую в него писать, приходилось некий драйвер-заглушку ставить. Что-то вроде PORT95NT, не помню точно.
А в лине, нужны повышенные права хз зачем? Реально COM порт может быть дырой в безопасности ОС?
Скажите, а в winXP зачем для записи дисков нужно было работать от администратора? Запись дисков - дыра в безопасности?

Я это к тому, что спор бессмысленный. Просто в Linux архитектура такая. Хочешь иметь возможность писать диски - будь в группе cdrw. Только читать? Будь в группе cdrom. Слушать музыку (иметь доступ к аудиоустройству)? Будь в группе audio. И так далее. В популярных дистрибутивах инсталлятор добавляет в нужные группы сам, поэтому многие, как мы видим, об этом не задумываются и не подозревают.
И для этого нужен пароль рута!
Для этого не нужен пароль рута.
Контактная информация:
Друг Кота
Аватара пользователя
Сообщения: 3385
Зарегистрирован: Пн окт 11, 2010 19:00:08

Сообщение Мурик »

WiseLord писал(а):не COM, может в этом дело?
Да дело в этом.
Вот такой код:

Код: Выделить всё

CompilerIf #PB_Compiler_OS = #PB_OS_Windows
  Port.s = "COM1"
CompilerElse
  Port.s = "/dev/ttyS0"
CompilerEndIf

OpenSerialPort(0, Port, 9600, #PB_SerialPort_NoParity, 8, 1,
               #PB_SerialPort_NoHandshake, 255, 255)
Откроет порт в Windows, Linux и MacOS X. Только в линуксе нужны повышенные права для этого, что ИМХО нелогично.
Открыл глаза
Аватара пользователя
Сообщения: 69
Зарегистрирован: Пн мар 18, 2013 13:24:56
Откуда: Нальчик

Сообщение kursant1986 »

WiseLord писал(а):Возможно, порт не ttyUSB0, а как-то иначе называется. Например, ttyACM0.

Посмотрите в dmesg, после втыкания в USB.
Вот что пишут в dmesg:

22853.015961] usb 2-5: USB disconnect, device number 72
[22855.310066] usb 2-5: new full-speed USB device number 74 using ohci_hcd
[22855.537295] usb 2-5: New USB device found, idVendor=0403, idProduct=6001
[22855.537308] usb 2-5: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[22855.537316] usb 2-5: Product: FT232R USB UART
[22855.537322] usb 2-5: Manufacturer: FTDI
[22855.537328] usb 2-5: SerialNumber: A600dAbY
[22855.545372] ftdi_sio 2-5:1.0: FTDI USB Serial Device converter detected
[22855.545491] usb 2-5: Detected FT232RL
[22855.545497] usb 2-5: Number of endpoints 2
[22855.545503] usb 2-5: Endpoint 1 MaxPacketSize 64
[22855.545509] usb 2-5: Endpoint 2 MaxPacketSize 64
[22855.545515] usb 2-5: Setting MaxPacketSize 64
[22855.551422] usb 2-5: FTDI USB Serial Device converter now attached to ttyUSB0
oleg@oleg:~$

Блин, походу только мне с этим "повезло".
«Достоинства человека должны определяться его делами, а не тем, что о нем говорят»
Томас Эдисон
Друг Кота
Аватара пользователя
Сообщения: 4905
Зарегистрирован: Чт апр 11, 2013 11:19:59
Откуда: Минск

Сообщение WiseLord »

[22855.551422] usb 2-5: FTDI USB Serial Device converter now attached to ttyUSB0
Ну вот, как я и писал в самом начале, подключаться к этому порту порту нужно командой
picocom -b 115200 /dev/ttyUSB0
Проверить, работает ли - после подключения замкнуть RX и TX и написать что-нибудь в той же консоли. Если есть echo-ответ (написанное возвращается и отображается как обычный набор текста), то всё работает.
Контактная информация:
Открыл глаза
Аватара пользователя
Сообщения: 69
Зарегистрирован: Пн мар 18, 2013 13:24:56
Откуда: Нальчик

Сообщение kursant1986 »

Ура!!!! Все заработало, только я так и непонял чего оно раньше неработало... :shock:
Но всеровно спасибо всем кто ответил.

Вот результат.

oleg@oleg:~$ sudo picocom -b 9600 /dev/ttyUSB0
picocom v1.7

port is : /dev/ttyUSB0
flowcontrol : none
baudrate is : 9600
parity is : none
databits are : 8
escape is : C-a
local echo is : no
noinit is : no
noreset is : no
nolock is : no
send_cmd is : sz -vv
receive_cmd is : rz -vv
imap is :
omap is :
emap is : crcrlf,delbs,

Terminal ready
0Hello World!!!

Теперь буду писать хост под это все дело.
«Достоинства человека должны определяться его делами, а не тем, что о нем говорят»
Томас Эдисон
Друг Кота
Аватара пользователя
Сообщения: 4905
Зарегистрирован: Чт апр 11, 2013 11:19:59
Откуда: Минск

Сообщение WiseLord »

kursant1986 писал(а):только я так и непонял чего оно раньше неработало...
Из-за неправильного пути к устройству порта (не dev/tty/ttyUSB0, а /dev/ttyUSB0)
Контактная информация:
Мучитель микросхем
Сообщения: 447
Зарегистрирован: Ср сен 26, 2012 14:12:47
Откуда: Київ

Сообщение Cheba »

Мурик писал(а): Только в линуксе нужны повышенные права для этого, что ИМХО нелогично.
В линуксе как раз сделано всё правильно. Открыть может только тот, у кого достаточно прав на устройство

Код: Выделить всё

ls -l /dev/ttyS0
crw-rw---- 1 root uucp 4, 64 янв 11 18:02 /dev/ttyS0
Достаточно входить в группу uucp, чтобы получить права на устройство. Рута получать для этого совсем необязательно. И это очень правильно, если где-то это не так, то там потенциально дырка в безопасности системы.
Друг Кота
Аватара пользователя
Сообщения: 3385
Зарегистрирован: Пн окт 11, 2010 19:00:08

Сообщение Мурик »

Как COM порт может стать дырой в безопасности системы?
Почему тогда выход в инет не считается гигантской дырой? А ведь он по умолчанию разрешен!
Потрогал лапой паяльник
Сообщения: 310
Зарегистрирован: Пт дек 17, 2010 14:41:25

Сообщение phenomen »

Да потому, что ком-порт - это физическое устройство, а в случае сети Вы имеете права использовать только высокие уровни OSI модели. Отключить или подключить сеть не выйдет без прав суперюзера.
Говорящий с текстолитом
Сообщения: 1658
Зарегистрирован: Вс дек 11, 2011 05:25:04
Откуда: Киев, Украина

Сообщение Tolmi »

Меня всегда забавляло, как люди, пришедшие из мира виндовс, первым делом всегда пытаются получить права рута. Мне рут вообще практически никогда не нужен на настроенной системе. Но самое смешное, что в виндовс грануляция прав доступа сделана ничуть не хуже, чем линукс, просто считанные единицы этим пользуются. Дыра в безопасности не в системе, а в мышлении человека по эту сторону экрана.
In theory, theory and practice are the same. In practice, they're not.
Контактная информация:
Друг Кота
Аватара пользователя
Сообщения: 3385
Зарегистрирован: Пн окт 11, 2010 19:00:08

Сообщение Мурик »

phenomen писал(а):Да потому, что ком-порт - это физическое устройство
Ну и что?
Речь же не идет об получении прямого доступа к порту. Работа ведется через стандартные функции ОС, которые через драйвер работают с портом. Где в таком случае дыра в безопасности?
phenomen писал(а):Вы имеете права использовать только высокие уровни OSI модели
Я бы сказал что появляется громадная дыра в безопасности вызванная возможностью взлома системы через сеть! В линукс тоже есть баги и уязвимости и их могут использовать для своих целей. Вот это действительно вызывает беспокойство.
А как COM порт может поставить под угрозу безопасность системы?
Друг Кота
Аватара пользователя
Сообщения: 4905
Зарегистрирован: Чт апр 11, 2013 11:19:59
Откуда: Минск

Сообщение WiseLord »

Да что Вы заладили со своей безопасностью системы. Если какой-то ресурс и не может потенциально быть дырой в безопасности, это не значит, что его нужно отдавать всем кому ни попадя.
Линукс - многопользовательская система. И возможность какому-то пользователю отдать какой-то ресурс, а другому - запретить его использовать, это не минус, как Вы пытаетесь тут доказать, а плюс.
Контактная информация:
Ответить

Вернуться в «Интеграция с ПК»