Mengubah izin pada port serial

54

Saya menggunakan Arduino IDE di Ubuntu, dan saya mengalami masalah dengan port serial. Ini telah berfungsi di masa lalu, tetapi untuk alasan yang mungkin tidak perlu, saya merasa perlu untuk mengubah kepemilikan beberapa file dari kepemilikan root ke kepemilikan pengguna saya.

Ini membuat IDE bekerja dengan benar, tetapi saya kehilangan kemampuan untuk menggunakan port serial yang benar. Di folder dev, port yang saya butuhkan terdaftar sebagai izin 166. Seseorang (yang tidak lagi berada di area untuk membantu saya) menukar izin ke 666, yang menjadikan semuanya berfungsi dengan baik.

Namun, itu dikembalikan segera setelah saya me-restart komputer saya, dan jika sekarang saya mencoba menggunakan perintah:

sudo chmod 666 ttyACM0

tidak ada yang terjadi. Tidak ada pesan kesalahan, tetapi juga tidak ada izin yang berubah.

Bagaimana saya bisa mengubahnya, dan bagaimana saya bisa mengubahnya secara permanen.

Saya minta maaf jika pertanyaan ini terlalu sederhana atau tidak jelas, saya adalah noob ubuntu, dan saya tidak akan menyesal!

Terrik
sumber
1
sudo chmod 666 / dev / ttyACM0 Ini adalah satu-satunya saran pada halaman ini yang bekerja pada lingkungan live 14,04 beta2 saya. Terima kasih!

Jawaban:

76

Masalah dengan izin untuk /dev/ttyACM0dapat diselesaikan secara permanen dengan menambahkan diri Anda ke dialoutgrup. Anda harus keluar dan masuk kembali sebelum perubahan kelompok dikenali.

Anda dapat melakukannya dengan sudo usermod -a -G dialout $USER

Rinzwind
sumber
Saya belajar tentang hal ini ketika Arduino IDE meminta untuk memberi root untuk menambahkan dirinya ke "grup Dailout". Sekarang saya tahu apa itu.
Ufoguy
Saya baru saja membeli Pulse-Eight USB - CEC Adapter untuk digunakan dengan TV baru saya dan ternyata tidak bekerja dengan Kodi di Ubuntu. Setelah memeriksa crash-log dan googling pesan kesalahan "ERROR: CecLogMessage - error membuka port serial '/ dev / ttyACM0': Izin ditolak", halaman ini muncul sebagai hasilnya. Terima kasih kepada Anda (dan Don Kirkby, di bawah ini - yang bekerja juga), saya dapat memperbaiki masalah dengan segera.
Rich.T.
Juga, jawaban dari "user247020" memberi saya solusi lain: Buka alat GUI "Pengguna dan Grup" dan jadikan diri Anda seorang "Administrator". Ini akan menambahkan Anda ke grup "dialout" (mis. "Use Modems"), antara lain.
Rich.T.
usermod -a -G dialout pi berfungsi ok, setelah sudo chgrp dialout / dev / ttyS0 dan bekerja dengan baik tetapi ketika saya reboot semua konfigurasi hilang. Saya menggunakan raspberry pi 3
J261
Tambahkan perintah apa pun yang perlu Anda ulang ke skrip startup. Jadi bash atau / etc / profile atau init.
Rinzwind
20

Saya tidak bisa mendapatkan saran Rinzwind untuk bekerja, karena mengeluh bahwa akun pengguna sudah ada. Sebagai gantinya, saya menggunakan perintah ini untuk menambahkan pengguna yang ada ( terrik) ke grup yang ada ( dialout), seperti yang dijelaskan pada Wiki Bantuan Ubuntu .

sudo adduser terrik dialout

Juga berguna adalah perintah ini untuk membuat daftar grup Anda saat ini, meskipun seperti yang dikatakan Rinzwind, Anda harus keluar dan masuk sebelum port serial mulai mengizinkan Anda masuk.

groups terrik
Don Kirkby
sumber
10

Saya tidak bisa mendapatkan jawaban Terrik bekerja, tetapi saya bisa jika saya membuat sedikit penyesuaian untuk jalan ttyACM0.

sudo chmod 666 /dev/ttyACM0

Akan memposting sebagai komentar tetapi saya belum memiliki hak untuk itu ...

gbmhunter
sumber
1
Izin tampaknya diatur ulang saat mencabut dan memasang kembali Arduino.
user1063287
tidak bekerja. :(
Freddy
itu bekerja, juga. tetapi membutuhkan aturan udev untuk mengizinkan kembali repplugging
pylover
Saya mencoba sudo chmod 666 /dev/ttyACM0dan tidak berhasil ketika memulai lagi. Adakah yang punya solusi?
user1063287
Hmm peepz ini berhasil .... Tambahkan perintah ke skrip startup. (/ Dev akan diciptakan kembali saat boot sehingga Anda perlu mengulang perintah ini setiap boot)
Rinzwind
10

Kemungkinan lain adalah membuat file aturan dalam /etc/udev/rules.d/direktori. Saya memiliki masalah serupa dan saya telah membuat 50-myusb.rulesfile di direktori di atas dengan konten ini:

KERNEL=="ttyACM[0-9]*",MODE="0666"

Perhatikan bahwa ini akan memberikan perangkat apa pun yang terhubung ke izin ttyACM socket / read. Jika Anda hanya perlu perangkat khusus untuk mendapatkan izin baca / tulis, Anda juga harus memeriksa idVendordan idProduct. Anda dapat menemukannya dengan menjalankan lsusbperintah dua kali, sekali tanpa perangkat Anda terhubung dan sekali ketika terhubung, kemudian amati baris tambahan di output. Di sana Anda akan melihat sesuatu seperti Bus 003 Device 005: ID ffff:0005. Dalam hal ini idVendor = ffffdan idProduct = 0005. Milikmu akan berbeda. Daripada Anda memodifikasi file aturan ke:

ACTION=="add", KERNEL=="ttyACM[0-9]*", ATTRS{idVendor}=="ffff", ATTRS{idProduct}=="0005", MODE="0666"

Sekarang hanya perangkat ini yang mendapat izin. Baca ini untuk tahu lebih banyak tentang menulis aturan udev.

Model NonStandard
sumber
2

Coba masuk ke Sistem / Pengguna dan Grup dan centang kotak pada nama pengguna Anda di Grup TTY.

pengguna247020
sumber
[Errno 13] Permission denied: '/dev/ttyACM0'. Selain ttygrup, pengguna juga dalam dialoutgrup. Linux Mint 17.1.
user1063287
1
@ user1063287 Cobasudo chmod a+rw /dev/ttyACM0
Vladimir S.