Thiết bị đầu cuối cổng nối tiếp> Không thể mở / dev / ttyS0: Quyền bị từ chối


19

Tôi đã có Windows XP trên hộp này và nó đã thất bại. Nghĩ rằng nó bị lỗi hệ điều hành, tôi đã cố cài đặt lại, và nó đã thất bại. Nhưng sau đó tôi đã cố gắng cài đặt Ubuntu và tôi không thể chạy nó từ USB hoặc từ HD.

Đã kiểm tra mem và phát hiện ra một trong những cây gậy 512 MB của tôi (có 2) không thành công. Tôi đã gỡ bỏ cái xấu và có thể cài đặt Ubuntu nhưng nó chậm chạp.

Tôi đã cố gắng nhanh chóng thiết lập đài phát thanh gói của mình cho Bão Sandy. Tải xuống Terminal Port Terminal và có thể sử dụng nhưng hệ thống vẫn bị khóa. Vì vậy, đã cài đặt Xubfox bên cạnh, lên kế hoạch hết ngày hôm sau để lấy RAM cho hộp. Đặt Xubfox vào và bây giờ tôi gặp lỗi sau với thiết bị đầu cuối cổng nối tiếp.:

Cannot open /dev/ttyS0: Permission denied

Tôi muốn có thể sử dụng thiết bị đầu cuối cổng nối tiếp hoặc tương đương với Xubfox để tôi có thể sử dụng thiết bị đầu cuối gói kpc3 của mình, kết nối với cổng com ở mặt sau của máy tính.

Có ý kiến ​​gì không?

Câu trả lời:


39

Các thiết bị tty thuộc nhóm "dialout", tôi nghi ngờ bạn không phải là thành viên của nhóm này và do đó bị từ chối truy cập vào / dev / ttyS0, vì vậy bạn cần thêm chính mình vào nhóm đó.

Trước tiên hãy kiểm tra xem bạn có phải là thành viên của nhóm đó không:

groups ${USER}

.. đây sẽ liệt kê tất cả các nhóm bạn thuộc về. Nếu bạn không thuộc về grup dialout, hãy thêm chính mình vào nó, ví dụ:

sudo gpasswd --add ${USER} dialout

Sau đó, bạn cần phải đăng xuất và đăng nhập lại để nó có hiệu quả. Sau đó xem nếu nó khắc phục vấn đề của bạn.


Ngay cả trong nhóm người dùng quay số với id 1000 cũng không thể mở cổng nối tiếp để đọc. Sau khi khởi động lại. Nhưng, khi tôi sử dụng sudo cho cùng một tệp thực thi, thì nó có thể mở /dev/ttyS0. Lý do có thể là gì?
Phương Đông

2
@Orient Tôi có cùng một vấn đề và đó là do nhóm dialoutkhông được xác định. Chạy đã newgrp dialoutkhắc phục sự cố.
TheGr8_Nik

@ TheGr8_Nik Cảm ơn. Giải pháp của bạn đã hoạt động trên Ubuntu 16.04. Không có khởi động lại liên quan. Theo mặc định, hệ thống này không có tên nhóm dialout; kiểm tra thông qua groupslệnh. Ngay cả sau khi thêm tên người dùng vào dialoutnhóm thông qua lệnh sudo usermod -a username -G dialout. Sau khi sử dụng newgrp dialout, lệnh này esptool.py -p /dev/ttyUSB0 flash_idđã làm việc.
Gấu chó

11

Giải pháp duy nhất phù hợp với tôi là: (mỗi khi tôi khởi động máy)

sudo chmod 666 /dev/ttys0

Nó thực sự cần phải được sửa chữa tại thời điểm cài đặt. Tôi vào ngày 15.10 và đã thử 16.04 LTS, vẫn như vậy. Có vẻ như một sửa chữa đơn giản như vậy.

Các phiên bản cũ hơn 10.04LTS không gặp phải vấn đề này.


2
Điều này hoạt động với raspberry pi 3 nhưng khi tôi khởi động lại bị mất quyền.
J261

1
Thêm quyền vào tên người dùng của tôi để quay số hoạt động tốt, sửa chữa khá đơn giản.
DRJ101

6

Bạn chỉ có thể sử dụng lệnh này:

sudo adduser $USER dialout

Điều này sẽ thêm người dùng hiện tại vào nhóm quay số. Đăng nhập và ra nó để có hiệu lực.


4

Trên Ubuntu 18.04, tôi đã khắc phục sự cố này bằng các lệnh sau:

sudo usermod -a -G tty $USER
sudo usermod -a -G dialout $USER

Và sau này, khởi động lại.

Nếu bạn vẫn gặp sự cố, hãy thử gỡ lỗi với:

strace -ff <COMMAND> > strace.txt 2>&1

Và tìm kiếm "bị từ chối" trong các bước.


3

Có một cái nhìn xung quanh các diễn đàn khác nhau và nó có vẻ là một lỗi liên quan đến quyền. Đây là cách tôi khắc phục vấn đề (phiên bản dài). Bạn S need cần cả hai cusetserialcác gói được cài đặt.

Trong ba tab thiết bị đầu cuối, đầu ra được theo dõi từ # tail -f /var/log/messages Đó là cách chúng tôi biết nếu chúng tôi có /dev/ttyUSB0hay không.

Trong tab thứ hai, chỉ cần chạy một vòng lặp đến ls -lthiết bị này để xem các quyền của nó và ID nhóm của nó là 'dialout'. Đây là bit quan trọng. Vì một số lý do, người dùng của bạn PHẢI sử dụng GID này để thực hiện cu, vì vậy ...

Trong tab thứ ba, với tư cách là root, đã làm # newgrp dialout(để tương ứng với GID của dialout). Đã thử nghiệm với # touch /tmp/anything... thực hiện ls -ltrên tệp này cho thấy nó được tạo bởi root với nhóm quay số, vì vậy chúng tôi đã sẵn sàng ... # cu -l /dev/ttyUSB0 Trong trường hợp của tôi, tôi cần phải quay lại lần nữa để xem lời nhắc dự kiến, trong trường hợp khác, tốc độ có thể cần để được chỉ định.


Đây là mảnh thực tế đã giúp tôi: Đối với một số lý do, người dùng của bạn PHẢI sử dụng GID này để làm cu, vì vậy ... . Cảm ơn rất nhiều.
ΤΖΩΤΖΙΟΥ

1

Đây là giải pháp:

Tôi vừa cập nhật hệ điều hành của mình lên Ubuntu 18. thông thường tôi sẽ cài đặt arduino IDE thông qua giao diện web Arduino vì phiên bản được cung cấp qua cổng Phần mềm Ubuntu luôn là phiên bản cũ hơn và tôi muốn có các tính năng mới nhất và hỗ trợ bảng. Tuy nhiên, vì tôi vừa cài đặt hệ điều hành mới nhất, tôi đoán rằng trung tâm phần mềm chính thức từ ubfox sẽ có phiên bản IDE mới nhất được liệt kê, và nó đã làm được.

Bây giờ đến phần ngon ngọt! Cả máy tính xách tay và máy tính để bàn của tôi đều có cùng một vấn đề khi truy cập các cổng nối tiếp. tôi đã thực hiện phần người dùng của nhóm quay số và đặt quyền cho cổng nối tiếp, nhưng luôn phải đăng xuất rồi quay lại, làm lại tất cả mỗi lần tôi khởi động lại! KHÔNG VUI!.

Lần này, nó không hoạt động. Ngay cả trong trung tâm phần mềm, tùy chọn quyền cho phần mềm hiển thị cổng nối tiếp "bị ngắt kết nối". không có tùy chọn cho phép quyền đối với cổng ngay cả sau khi tất cả các quyền được cấp thủ công thông qua cửa sổ đầu cuối bằng sudo.

Tôi quyết định gỡ cài đặt Arduino IDE từ trung tâm phần mềm và cài đặt nó từ giao diện web, vì vậy tôi đã làm. Lần này tôi đọc các tập tin cài đặt, chỉ để xem nó có đề cập đến quyền cho cổng nối tiếp hay không, dĩ nhiên là nó đã làm! ****** tất cả các cổng được thiết lập với quyền truy cập đầy đủ, quyền truy cập của người dùng trên bảng. Hóa ra đây là câu trả lời. sau khi chạy tệp arduino-linux-setup.sh do arduino cung cấp, tất cả các vấn đề về cổng nối tiếp đã được giải quyết. sau đây là một đoạn trích từ arduino-linux-setup.shtập tin;

echo ""
echo "******* Add User to dialout,tty, uucp, plugdev groups *******"
echo ""

sudo usermod -a -G tty $1
sudo usermod -a -G dialout $1
sudo usermod -a -G uucp $1
sudo groupadd plugdev
sudo usermod -a -G plugdev $1


acmrules () {

    echo ""
    echo "# Setting serial port rules"
    echo ""

    cat <<EOF
    "KERNEL="ttyUSB[0-9]*", TAG+="udev-acl", TAG+="uaccess", OWNER="$1"
   "KERNEL="ttyACM[0-9]*", TAG+="udev-acl", TAG+="uaccess", OWNER="$1"
   EOF

}

vì vậy bạn thấy ngay cả KernEL cũng bị ảnh hưởng. Đề xuất của tôi:

cài đặt từ trang web arduino ide. bỏ qua trung tâm phần mềm tại thời điểm này, cho đến khi nó được sửa chữa. Có, TRUNG TÂM PHẦN MỀM không cho phép hoán vị cổng nối tiếp trong khi cài đặt và mãi mãi về sau.

Giải quyết vấn đề!


0

Trong trường hợp của tôi, sự cố vẫn tồn tại, ngay cả khi tôi thêm người dùng của mình vào nhóm bằng cách sử dụng:

Vì vậy, khi tôi sử dụng:

sudo gpasswd --add ${USER} dialout

và khi tôi gõ: groupsTôi nhận được kết quả này:

ilyahoo adm cdrom sudo dip plugdev lpadmin sambashare

Nhưng khi tôi gõ thông id -Gn ilyahoosố là:

ilyahoo adm tty dialout cdrom sudo dip plugdev lpadmin sambashare 

Tôi biết rằng có một vấn đề mà tôi không biết nó thực sự là gì.

Để có được một giải pháp tôi chỉ cần gõ

newgrp ilyahoo

và vấn đề đã được khắc phục.


Chào mừng ilyahoo đến hỏi Ubuntu! Hãy cố gắng định dạng bài theo dòng hướng dẫn của chúng tôi. Cố gắng định dạng đầu ra theo cách dễ đọc hơn. Cảm ơn
abu_bua

1
@abu_bua vui lòng sử dụng định dạng mã cho đầu ra lệnh, không trích dẫn định dạng.
muru

0

Đáp án đơn giản. Bạn cần thêm người dùng của mình vào hai nhóm để có quyền truy cập vào các cổng usb. Những nhóm này là dialouttty:

sudo usermod -a -G dialout <user>
sudo usermod -a -G tty <user>

Thay thế <user>bằng tên người dùng thực tế trong các lệnh đó.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.