Terminal port serial> Tidak bisa membuka / dev / ttyS0: Izin ditolak


19

Saya punya Windows XP di kotak ini dan gagal. Mengira itu rusak OS saya mencoba menginstal ulang, dan gagal. Tetapi kemudian saya mencoba menginstal Ubuntu, dan saya tidak dapat menjalankannya dari USB atau dari HD.

Melakukan tes mem dan menemukan salah satu tongkat 512MB saya (punya 2) gagal. Saya menghapus yang buruk dan bisa menginstal Ubuntu tapi itu lamban.

Saya mencoba untuk dengan cepat mengatur radio paket saya untuk Hurricane Sandy. Unduh Terminal Port Serial dan bisa digunakan tetapi sistem tetap terkunci. Jadi Instal Xubuntu di sebelahnya, berencana kehabisan hari berikutnya untuk mendapatkan RAM untuk kotak. Nyalakan Xubuntu dan sekarang saya mendapatkan kesalahan berikut dengan terminal port serial .:

Cannot open /dev/ttyS0: Permission denied

Saya ingin dapat menggunakan terminal port serial, atau setara dengan Xubuntu sehingga saya dapat menggunakan terminal paket kpc3 saya, sambungkan ke port com di bagian belakang komputer saya.

Ada ide?

Jawaban:


39

Perangkat tty milik grup "dialout", saya kira Anda bukan anggota grup ini dan karenanya tidak memiliki akses ke / dev / ttyS0, jadi Anda perlu menambahkan diri Anda ke grup itu.

Pertama periksa apakah Anda adalah anggota grup itu:

groups ${USER}

..ini akan mendaftar semua grup milik Anda. Jika Anda bukan milik grup dialout maka tambahkan diri Anda ke dalamnya, misalnya:

sudo gpasswd --add ${USER} dialout

Anda kemudian harus keluar dan masuk lagi agar bisa efektif. Kemudian lihat apakah itu memperbaiki masalah Anda.


Bahkan menjadi pengguna grup dialout dengan id 1000 tidak dapat membuka port serial untuk membaca. Setelah reboot. Tapi, ketika saya menggunakan sudo untuk executable yang sama, maka itu bisa dibuka /dev/ttyS0. Apa alasannya?
Tomilov Anatoliy

2
@Orient Saya punya masalah yang sama dan itu karena grup dialouttidak didefinisikan. Menjalankan newgrp dialoutmemperbaiki masalah.
TheGr8_Nik

@ TheGr8_Nik Terima kasih. Solusi Anda bekerja di Ubuntu 16.04. Tidak perlu reboot. Secara default, sistem ini tidak memiliki nama grup dialout; diperiksa melalui groupsperintah. Bahkan setelah menambahkan nama pengguna ke dialoutgrup melalui perintah sudo usermod -a username -G dialout. Setelah menggunakan newgrp dialout, perintah ini esptool.py -p /dev/ttyUSB0 flash_idberhasil.
Sun Bear

11

Satu-satunya solusi yang berfungsi untuk saya adalah: (setiap kali saya mem-boot mesin)

sudo chmod 666 /dev/ttys0

Itu benar-benar perlu diperbaiki pada saat instalasi. Saya pada 15.10 dan telah mencoba 16,04 LTS, masih sama di sana. Sepertinya perbaikan sederhana.

Versi lama 10.04LTS tidak memiliki masalah ini.


2
ini bekerja dengan raspberry pi 3 tetapi ketika saya reboot kehilangan izin.
J261

1
Menambahkan izin ke nama pengguna saya untuk dialout berfungsi dengan baik, perbaikan yang cukup sederhana.
DRJ101

6

Anda bisa menggunakan perintah ini:

sudo adduser $USER dialout

Ini akan menambahkan pengguna saat ini ke grup dialout. Masuk dan keluar untuk mulai berlaku.


4

Di Ubuntu 18.04, saya memperbaiki masalah ini dengan perintah berikut:

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

Dan setelah ini, reboot.

Jika Anda masih memiliki masalah, cobalah untuk debug dengan:

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

Dan mencari "ditolak" di strace.


3

Telah melihat-lihat berbagai forum dan sepertinya ada bug yang terkait dengan izin. Inilah cara saya mengatasi masalah (versi lama). Anda AKAN perlu KEDUA cudan setserialpaket diinstal.

Dalam tiga tab terminal, dipantau keluaran dari # tail -f /var/log/messages Begitulah kita tahu apakah kita punya /dev/ttyUSB0atau tidak.

Pada tab kedua, jalankan saja loop ke ls -lperangkat ini untuk melihat izinnya dan ID grupnya adalah 'dialout'. INI adalah bagian yang kritis. Untuk beberapa alasan, pengguna Anda HARUS menggunakan GID ini untuk melakukannya cu, jadi ...

Pada tab ketiga, sebagai root, lakukan # newgrp dialout(untuk berkorespondensi dengan GID dari dialout). Diuji dengan # touch /tmp/anything... melakukan ls -lpada file ini menunjukkan itu dibuat oleh root dengan grup dialout, jadi kami siap untuk ... # cu -l /dev/ttyUSB0 Dalam kasus saya, saya perlu menekan kembali lagi untuk melihat prompt yang diharapkan, dalam kasus lain kecepatan mungkin perlu ditentukan.


Ini adalah bagian yang sebenarnya yang membantu saya: Untuk beberapa alasan, pengguna harus menggunakan GID ini untuk melakukan cu, jadi ... . Terima kasih banyak.
ΤΖΩΤΖΙΟΥ

1

Ini solusinya:

Saya baru saja memperbarui sistem operasi saya ke Ubuntu 18. biasanya saya akan menginstal arduino IDE melalui tampilan web Arduino karena yang disediakan melalui portal Software Ubuntu selalu versi yang lebih lama, dan saya menginginkan fitur terbaru dan dukungan papan. Namun, karena saya baru saja menginstal sistem operasi terbaru, saya menduga bahwa pusat perangkat lunak resmi dari ubuntu akan memiliki versi terbaru dari IDE yang terdaftar, dan ternyata benar.

Sekarang ke bagian yang berair! Baik laptop saya dan desktop saya memiliki masalah yang sama dalam mengakses port serial. Saya telah membuat bagian pengguna dari grup dial-up, dan mengatur izin untuk port serial, tetapi selalu harus logout lalu kembali, lakukan semuanya lagi setiap kali saya reboot! TIDAK MENYENANGKAN!.

Kali ini, itu tidak berhasil. Bahkan di pusat perangkat lunak opsi izin untuk perangkat lunak menunjukkan port serial "terputus". tidak ada opsi untuk mengizinkan izin ke port bahkan setelah semua izin diberikan secara manual melalui jendela terminal menggunakan sudo.

Saya memutuskan untuk menghapus IDE Arduino dari pusat perangkat lunak, dan menginstalnya dari tampilan web, jadi saya melakukannya. Kali ini saya membaca file instal, hanya untuk melihat apakah itu menyebutkan izin untuk port serial atau tidak, ***** tentu saja! ****** semua port diatur dengan izin akses penuh, akses pengguna di seluruh papan. Ternyata inilah jawabannya. setelah menjalankan file arduino-linux-setup.sh yang disediakan oleh arduino, semua masalah port serial terpecahkan. berikut ini adalah kutipan dari arduino-linux-setup.shfile;

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

}

sehingga Anda melihat bahkan KERNEL terpengaruh. Saran saya:

instal dari situs web arduino ide. abaikan pusat perangkat lunak saat ini, hingga diperbaiki. Ya PUSAT PERANGKAT LUNAK tidak mengizinkan izin ke port serial selama instalasi, dan selamanya.

Masalah terpecahkan!


0

Dalam kasus saya masalahnya masih ada, bahkan ketika saya menambahkan pengguna saya ke grup menggunakan:

Jadi ketika saya menggunakan:

sudo gpasswd --add ${USER} dialout

dan ketika saya mengetik: groupsSaya mendapat hasil ini:

ilyahoo adm cdrom sudo dip plugdev lpadmin sambashare

Tetapi ketika saya mengetik id -Gn ilyahooputput adalah:

ilyahoo adm tty dialout cdrom sudo dip plugdev lpadmin sambashare 

Saya tahu ada masalah yang saya tidak tahu apa itu jujur.

Untuk mendapatkan solusi saya cukup mengetik

newgrp ilyahoo

dan masalahnya telah diperbaiki.


Selamat datang ilyahoo to askubuntu! Silakan coba memformat posting sesuai dengan garis panduan kami. Cobalah untuk memformat output dengan cara yang lebih mudah dibaca. Terima kasih
abu_bua

1
@abu_bua silakan gunakan pemformatan kode untuk output perintah, bukan pemformatan kutipan.
muru

0

Jawabannya sederhana. Anda perlu menambahkan pengguna Anda ke dua grup untuk memiliki akses ke port usb. Kelompok-kelompok ini adalah dialoutdan tty:

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

Ganti <user>dengan nama pengguna sebenarnya di perintah-perintah itu.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.