LinuxForum.Fans
Тема

COM port: Ubuntu vs Windows

Автор: zaal 10 сообщений 4997 просмотров
#282369

Привет!

Дано:
ноут с Ubuntu 12.04 и Windows7,
железка, подключаемая по USB и видимая системой как COM порт,
скрипт на python, посылающий команды в железку и слушающий ответ

Проблема: в Ubuntu попытка открыть порт терпит фейл с ошибкой:

text
could not open port /dev/ttyACM0: [Errno 5] Input/output error: '/dev/ttyACM0'

Подключение железки к USB проходит нормально, создаётся файл /dev/ttyACM0, вот вывод dmesg

Показать

[ 2247.036510] usb 2-1.1: new full-speed USB device number 4 using ehci_hcd
[ 2247.198083] cdc_acm 2-1.1:1.0: This device cannot do calls on its own. It is not a modem.
[ 2247.198094] cdc_acm 2-1.1:1.0: No union descriptor, testing for castrated device
[ 2247.198147] cdc_acm 2-1.1:1.0: ttyACM0: USB ACM device
[ 2247.200314] usbcore: registered new interface driver cdc_acm
[ 2247.200322] cdc_acm: USB Abstract Control Model driver for USB modems and ISDN adapters
[ 2252.273850] tty_port_close_start: tty->count = 1 port count = 0.
[ 2257.259277] generic-usb 0003:0451:F432.0001: usb_submit_urb(ctrl) failed
[ 2257.259341] generic-usb 0003:0451:F432.0001: timeout initializing reports
[ 2257.260012] generic-usb 0003:0451:F432.0001: hiddev0,hidraw0: USB HID v1.01 Device [Texas Instruments Texas Instruments MSP-FET430UIF] on usb-0000:00:1d.0-1.1/input1
[ 2257.260057] usbcore: registered new interface driver usbhid
[ 2257.260062] usbhid: USB HID core driver

В винде тот же самый скрипт без проблем открывает порт и работает с железкой. Также выяснилось, что если подключить железку в винде, не отключаясь перезагрузить ноут и зайти в Ubuntu, то все работает как надо. Если же запускать Ubuntu с нуля или переподключить железку порт перестаёт открываться.

Подскажите в чем может быть проблема?

#282370
"zaal" написал:
Подскажите в чем может быть проблема?

права смотрел?
id && ls /dev/ttyACM0

#282371
text
id && ls /dev/ttyACM0
uid=1000(zaal) gid=1000(zaal) группы=1000(zaal),4(adm),24(cdrom),27(sudo),30(dip),46(plugdev),109(lpadmin),124(sambashare)

скрипт запускается под sudo

#282373

судо не панацея.
сделайте
sudo su -
и потом проверьте скрипт

#282374
"Fat-Zer" написал:
ls /dev/ttyACM0

ls -l /dev/ttyACM0

"zaal" написал:
скрипт запускается под sudo

тогда не суть... потом если надо будет от юзера запускать - поправишь

"zaal" написал:
[ 2257.259277] generic-usb 0003:0451:F432.0001: usb_submit_urb(ctrl) failed
[ 2257.259341] generic-usb 0003:0451:F432.0001: timeout initializing reports
[ 2257.260012] generic-usb 0003:0451:F432.0001: hiddev0,hidraw0: USB HID v1.01 Device [Texas Instruments Texas Instruments MSP-FET430UIF] on usb-0000:00:1d.0-1.1/input1
[ 2257.260057] usbcore: registered new interface driver usbhid
[ 2257.260062] usbhid: USB HID core driver

ты мышку мышку случаем одновременно не подключал?

судя по dmesg'у перспективы выглядят не радужными...
lsusb && lsusb -t можно посмотрить, не раньше, чем через 10 секуд после подключения девайса?
ну и сам скрипт в студию и на какой конкретно строчке выдаёт ошибку...

"Харитон" написал:
судо не панацея.сделайте sudo su -и потом проверьте скрипт

чисто ради интереса, на что рассчитываешь?

#282385

ради спортивного ответа:
1. судо может дать только отдельные права доступа в зависимости от правил судо.
2. судо не меняет логин-пользователя, в связи с чем многие службы, а так же ядро за этим следят и для некоторых критичных параметров не дают права изменять их не логин-руту...

#282386

и чтоб окончательно развеять сомнения:

$ sudo echo '1' >/dev/ttyS0
-bash: /dev/ttyS0: Permission denied
$ sudo su -c "echo '1' >/dev/ttyS0"

все ок

#282387

Хм.. А так?
[console]$ sudo sh -c "echo '1' > /dev/ttyS0"[/console]
Или так:
[console]
$ cat test.sh
#!/bin/bash
echo '1' > /dev/ttyS0

$ ./test.sh
./test.sh: строка 3: /dev/ttyS0: Отказано в доступе

$ sudo ./test.sh

[/console]

#282388

можно и так но правильнее логин-шелл заиметь тогда на все случаи будете защищены от непоняток

sudo su - -c "echo '1' >/dev/ttyS0"

#282420

похоже никто не дочитал до этого

"zaal" написал:
если подключить железку в винде, не отключаясь перезагрузить ноут и зайти в Ubuntu, то все работает как надо

это натолкнуло на мысль, что проблема где-то на уровне железа.
Так и оказалось, причем похоже проблема вряд ли решаема (во всяком случае мне не по зубам). Буду работать в винде.

Прошу прощения за зря созданную тему.

Войдите или зарегистрируйтесь, чтобы ответить.