Никакое разрешение получить доступ к моему USB-устройству, которое находится в/dev/ttyUSB0, даже при том, что я нахожусь в dialout

Проблема Ubuntu 14.04: кажется, что у меня нет разрешения получить доступ к ttyUSB0, хотя я уже нахожусь в dialout группе. (и вышел из системы, и въезжайте задним ходом),

ammirato@bvision4:/dev$ chmod 666 ttyUSB0 
chmod: changing permissions of 'ttyUSB0': Operation not permitted
ammirato@bvision4:/dev$ groups
compsci adm dialout sudo video groups: cannot find name for group ID 1096176595
109617659

даже после того, как я изменяю использование полномочий sudo Я все еще не могу получить доступ к нему из своей учетной записи.

ammirato@bvision4:/dev$ sudo chmod 666 ttyUSB0 
ammirato@bvision4:/dev$ ls -l ttyUSB0 
crw-rw-rw- 1 root dialout 188, 0 May 15 16:15 ttyUSB0
ammirato@bvision4:/dev$ chmod 666 ttyUSB0
chmod: changing permissions of 'ttyUSB0': Operation not permitted

Большая проблема:

Я пытаюсь выполнить некоторый код Арии, который связывается с роботом через USB. Я выполнил его прежде, и все хорошо работало. По некоторым причинам это больше не работает. Запущение программы с sudo или не не помогает. Программа пытается получить доступ к роботу через ttyS0, но я создал символьную ссылку от ttyUSB0 до ttyS0.

Также я попытался выполнить код Арии через ROS, который пытается соединиться через ttyUSB0, и он все еще не соединяется.

Существуют различные выводы в моем коде, если мне подключили USB-устройство или нет, таким образом, я думаю, что это может обнаружить устройство, но возможно не имеет разрешения к чтению-записи

Подключенное устройство:

ammirato@bvision4:/dev$ rosrun rosaria RosAria
[ INFO] [1431722006.042624050]: RosAria: using port: [/dev/ttyUSB0]
Could not connect to simulator, connecting to robot through serial port /dev/ttyUSB0.
Syncing 0
No packet.
Syncing 0
No packet.
Trying to close possible old connection
Syncing 0
No packet.
Syncing 0
No packet.
 Robot may be connected but not open, trying to dislodge.
Syncing 0
No packet.
 Robot may be connected but not open, trying to dislodge.
Syncing 0
No packet.
Could not connect, no robot responding.
Failed to connect to robot.
[ERROR] [1431722012.788049009]: RosAria: ARIA could not connect to robot! (Check ~port parameter is correct, and permissions on port device.)
[FATAL] [1431722012.788127232]: RosAria: ROS node setup failed..

Устройство, НЕ подключенное:

ammirato@bvision4:/dev$ rosrun rosaria RosAria
[ INFO] [1431722075.336807723]: RosAria: using port: [/dev/ttyUSB0]
Could not connect to simulator, connecting to robot through serial port /dev/ttyUSB0.
ArSerialConnection::open: Could not open serial port '/dev/ttyUSB0' | ErrorFromOSNum: 2 ErrorFromOSString: No such file or directory
Could not connect, because open on the device connection failed.
Failed to connect to robot.
[ERROR] [1431722075.385556969]: RosAria: ARIA could not connect to robot! (Check ~port parameter is correct, and permissions on port device.)
[FATAL] [1431722075.385627788]: RosAria: ROS node setup failed... 

Я использую Ubuntu 14.04

ammirato@bvision4:/dev$ stat /dev/ttyUSB0
  File: '/dev/ttyUSB0'
  Size: 0           Blocks: 0          IO Block: 4096   character special file
Device: 5h/5d   Inode: 290088      Links: 1     Device type: bc,0
Access: (0660/crw-rw----)  Uid: (    0/    root)   Gid: (   20/ dialout)
Access: 2015-05-15 21:52:26.118904498 -0400
Modify: 2015-05-15 21:52:26.118904498 -0400
Change: 2015-05-15 21:52:26.118904498 -0400
 Birth: -
1
задан 24 May 2017 в 14:29

2 ответа

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

Относительно symlinking/dev/ttyUSB0 как/dev/ttyS0 - я думаю, что это - плохая идея. Если у Вас нет источника программы, пытающейся использовать порт, Вы действительно не знаете, как разработчик проверяет на узел устройства последовательного порта. Возможно, это проверяет, что устройство является устройством посимвольного ввода-вывода (символьная ссылка не удовлетворяет это условие), и затем перестал работать?

я всегда предпочитал бы использовать флаг командной строки программы для определения порта по созданию обходного решения, такого как symlinking.

ArSerialConnection::open: Could not open serial port '/dev/ttyUSB0' | ErrorFromOSNum: 2 ErrorFromOSString: No such file or directory
Could not connect, because open on the device connection failed.

, Каков вывод stat /dev/ttyUSB0, когда Вы выполняете эту команду?

Также - после добавления Вашего обычного пользователя считают к dialout группа, Вы выходили из системы и затем обратно в?

0
ответ дан 24 May 2017 в 14:29

Учитывая Ваши полномочия корректны:

$ ls -l /dev/ttyUSB0
crw-rw---- 1 root dialout 188, 0 Okt 28 04:09 /dev/ttyUSB0
$ id
uid=1000(you) ... 20(dialout)

Кажется, что существует проблема с программным обеспечением. Сегодня у меня была точно та же проблема. Следующая команда показала, что проблема была где-то в другом месте:

strace -ff igotugui >strace.txt 2>&1

Затем в strace.txt я нашел строки как (для всех существующих устройств между прочим):

[pid 13391] openat(AT_FDCWD, "/dev/bus/usb/004/001", O_RDWR) = -1 EACCES (Permission denied)
[pid 13391] ioctl(28, USBDEVFS_CONNECTINFO, 0x7f4efa5c6a58) = -1 EPERM (Operation not permitted)
[pid 13391] openat(AT_FDCWD, "/dev/bus/usb/003/010", O_RDWR) = -1 EACCES (Permission denied)
[pid 13391] ioctl(28, USBDEVFS_CONNECTINFO, 0x7f4efa5c6a58) = -1 EPERM (Operation not permitted)

На данный момент я не знаю, как узнать, который является названием соответствующего устройства (это - другое каждый раз, когда Вы подключаете устройство физически), но для Вашей программы для работы, необходимо изменить полномочия того файла устройств:

sudo chgrp dialout /dev/bus/usb/003/010
0
ответ дан 7 December 2019 в 16:18

Другие вопросы по тегам:

Похожие вопросы: