Linux mówi mi, że port szeregowy jest używany, ale tak nie jest

11

Na Linuksie CrunchBang (wariant Debian) mam port COM ttyS0, którego próbuję używać z urządzeniem NFC. libnfc odpowiedział, że nie widzi żadnych urządzeń NFC, więc spróbowałem bezpośrednio otworzyć port COM. Do tego użyłem:

sudo cu -l /dev/ttyS0 -s 9600

Jednak to polecenie zwraca:

cu: open (/dev/ttyS0): Permission denied
cu: /dev/ttyS0: Line in use

Nie wiem, co mogłoby być możliwe przy użyciu tego połączenia. Aby się dowiedzieć, próbowałem przeczytać wszystkie otwarte procesy i filtrować na potrzeby ttyS0:

ps -ef | grep tty

ale dla tego polecenia nic się nie wyświetla ttyS0. Próbowałem także pobrać wszystkie otwarte pliki i filtrować w celu zablokowania ttyS0:

lsof | grep tty

ale to nic nie zwraca za pomocą ttyS0.

Jak to możliwe, cuże linia jest w użyciu, ale obie psi lsofnic nie zwracają za pomocą tej linii?

Aza
źródło
Co z lsof / dev / ttyS0
Ciclamino
@Ciclamino To nie zmienia - tty jest podciągiem /dev/ttyS0. To jednak ukrywa wszystkie inne tty.
Aza,
Mam ten sam problem. minicomdziała dobrze, ale cui screenodmawiają rozmawiać /dev/ttyUSB0. Poradzono mi, aby dodać użytkownika do mojego uucpi dialoutgrup i zalogować się, że nie pomogło.
Vorac

Odpowiedzi:

10

Prawdopodobnie nie ma rzeczywistego wykorzystania linii, ale problem z uprawnieniami. szybkim i brudnym sposobem przetestowania dla mnie było wykonanie:

ls -la /dev/ttyUSB0
sudo chmod 666 /dev/ttyUSB0

i spróbuj ponownie cu. Jeśli zacznie działać, musisz zadbać o odpowiedni udevplik i uprawnienia / grupy użytkowników. Dla mojego urządzenia wyglądało to tak (będąc członkiem plugdevgrupy):

> cat /etc/udev/rules.d/42-CP210x.rules 
ATTRS{idVendor}=="10c4", ATTRS{idProduct}=="ea60", SUBSYSTEMS=="usb",
ACTION=="add", MODE="0666", GROUP="plugdev"
IljaBek
źródło
2

Wygląda na to, że jest to błąd cu. Rozwiązałem ten problem, zmieniając grupę właścicieli za /dev/ttyUSB0pomocą następującego polecenia:

chown root:root /dev/ttyUSB0
Pod
źródło
2

Uprawnienia do urządzeń szeregowych są przyznawane członkom dialoutgrupy. Aby się połączyć /dev/ttyS0, dodałem bieżącego użytkownika do grupy, używając:

sudo adduser <username> dialout

alealmuna
źródło