Seri portta izinleri değiştirme


54

Ubuntu'daki Arduino IDE'yi kullanıyorum ve seri port ile ilgili sorunlar yaşıyorum. Geçmişte çalıştı, ancak gereksiz olabilecek nedenlerden dolayı, bazı dosyaların sahipliğini kök sahipliğinden kullanıcı sahipliğime değiştirmem gerektiğini hissettim.

Bu IDE'nin doğru çalışmasına neden oldu, fakat doğru seri portu kullanma yeteneğimi kaybettim. Dev klasöründe, ihtiyacım olan bağlantı noktası izin 166 olarak listelenmiştir. Biri (artık bana yardım edecek alanda bulunmayan) izinlerini 666'ya değiştirdi, bu da hepsini şerefli bir şekilde çalıştırdı.

Ancak, bilgisayarımı yeniden başlattığım anda geri döndü ve şimdi komutu kullanmaya çalışırsam:

sudo chmod 666 ttyACM0

hiçbir şey olmuyor. Hata mesajı yok, ancak izin de değişmiyor.

Nasıl değiştirebilirim ve kalıcı olarak nasıl değiştirebilirim.

Bu soru çok basit ya da net değilse, özür dilerim, ben bir ubuntu noob'um ve geri bildirimde bulunmadım!


1
sudo chmod 666 / dev / ttyACM0 Bu sayfadaki 14.04 beta2 canlı ortamımda çalışan tek öneriydi. Teşekkürler!

Yanıtlar:


76

İzinleri olan sorun /dev/ttyACM0, dialoutgruba kendinizi ekleyerek kalıcı olarak çözülebilir . Grup değişikliği tanınmadan önce oturumu kapatmanız ve ardından tekrar giriş yapmanız gerekir.

Bunu ile yapabilirsin sudo usermod -a -G dialout $USER


Arduino IDE kendini "Dailout grubuna" eklemek için kök vermek istediğinde bunu öğrendim. Şimdi ne olduğunu biliyorum.
Ufoguy

Yeni televizyonumla kullanmak için bir Pulse-Sekiz USB - CEC Adaptörü satın aldım ve başlangıçta Ubuntu'da Kodi ile çalışmadığını gördüm. Kilitlenme günlüğünü kontrol ettikten ve "ERROR: CecLogMessage - seri portu açma hatası '/ dev / ttyACM0': hata reddedildi" hata mesajını kontrol ettikten sonra, bu sayfa sonuçlandı. Sayende (ve Don Kirkby, aşağıda - bu işe yarıyor) sorunu hemen çözebildim.
Rich.T.

Ayrıca, "user247020" ifadesinin cevabı bana başka bir çözüm verdi: "Kullanıcılar ve Gruplar" GUI aracını açın ve kendinize bir "Yönetici" olun. Bu sizi diğerlerinin yanı sıra "dialout" grubuna (yani, "Modemleri Kullan") ekleyecektir.
Rich.T.

usermod -a -G dialout pi sudo chgrp dialout / dev / ttyS0 işlevinden sonra iyi çalışır, ancak yeniden başladığımda tüm yapılandırmalar kaybolur. Ahududu pi 3 üzerinde yaşıyorum
J261

Başlangıç ​​komut dosyasına yinelemek için gereken herhangi bir komutu ekleyin. Yani bash veya / etc / profile veya init.
Rinzwind

20

Rinzwind'in önerisini işe alamadım , çünkü kullanıcı hesabının zaten mevcut olduğundan şikayet etti. Bunun yerine, bu komutu Ubuntu Yardım Wiki'sinde açıklandığı gibi terrikmevcut bir gruba ( dialout) mevcut bir gruba ( ) eklemek için kullandım .

sudo adduser terrik dialout

Ayrıca, Rinzwind'in dediği gibi, seri bağlantı noktası izin vermeden önce oturumunuzu kapatıp oturum açmanız gerekse de, geçerli gruplarınızı listelemek için bu komut da kullanışlıdır.

groups terrik

10

Ben alamadım Terrik cevabı ben yoluna bu hafif bir ayar yaptıysanız çalışma, fakat yapabilirim ttyACM0.

sudo chmod 666 /dev/ttyACM0

Yorum olarak yayınlar, ancak bunun için ayrıcalıklara sahip değilim ...



çalışmıyor. :(
Freddy

iyi çalışıyor. ancak yeniden izni için repplugging üzerinde udev kuralı gerektirir
pylover

Denedim sudo chmod 666 /dev/ttyACM0ve tekrar başlatırken işe yaramaz. Bir çözümü olan var mı?
user1063287

Hmm peepz bu işe yarıyor ... Komutu bir başlangıç ​​betiğine ekleyin. (/ Dev önyüklemede yeniden yaratılıyor, bu nedenle her önyüklemeyi yeniden yapmanız gerekiyor)
Rinzwind

10

Diğer bir olasılık ise, /etc/udev/rules.d/dizin dosyasında bir kural dosyası oluşturmaktır . Benzer bir sorunum vardı ve 50-myusb.rulesyukarıdaki dizinde bu içerikle dosya oluşturdum :

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

Bunun, ttyACM soket okuma / yazma izinlerine bağlı herhangi bir cihaza verileceğini unutmayın. Okuma / yazma izinlerini almak için yalnızca belirli bir cihaza ihtiyacınız varsa idVendorve ayrıca işaretlemelisiniz idProduct. Bunları lsusbiki kez çalıştırarak , bir kez cihazınız bağlı olmadan ve bir kez bağlandığında komutları bularak bulabilirsiniz , ardından çıkıştaki ilave çizgiyi izleyin. Orada bir şey göreceksiniz Bus 003 Device 005: ID ffff:0005. Bu durumda idVendor = ffffve idProduct = 0005. Seninki farklı olacak. Kural dosyasını değiştirdikten sonra:

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

Şimdi sadece bu cihaz izinleri alıyor. Udev kuralları hakkında daha fazla bilgi edinmek için bunu okuyun .


2

Sistem / Kullanıcılar ve Gruplar'a girmeyi ve TTY Grubu'ndaki kullanıcı adınızdaki kutuyu işaretlemeyi deneyin.


[Errno 13] Permission denied: '/dev/ttyACM0'. Grup yanı sıra tty, kullanıcı da dialoutgrup içindedir. Linux Nane 17.1.
user1063287

1
@ user1063287 Deneyinsudo chmod a+rw /dev/ttyACM0
Vladimir S.
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.