Seri bağlantı noktası terminali> açılamıyor / dev / ttyS0: İzin reddedildi


19

Bu kutuda Windows XP vardı ve başarısız oldu. OS bozuk olduğunu düşünüyorum Yeniden yüklemeye çalıştım ve başarısız oldu. Ama sonra Ubuntu'yu yüklemeye çalıştım ve USB'den veya HD'den çalıştıramadım.

Mem testi (2 vardı) başarısız oldu ve benim 512MB sopa birini buldum. Kötü olanı kaldırdım ve Ubuntu'yu yükleyebildim ama halsizdi.

Sandy kasırgası için hızlı bir şekilde paket radyomu kurmaya çalışıyordum. Seri Port Terminali'ni indirdi ve biraz faydalanabildi ancak sistem kilitlenmeye devam etti. Bu yüzden yanındaki Xubuntu yüklendi, kutu için RAM almak için ertesi gün tükenmeyi planlıyor. Xubuntu koymak ve şimdi seri port terminali ile aşağıdaki hatayı alıyorum .:

Cannot open /dev/ttyS0: Permission denied

Kpc3 paket terminalimi kullanabilmem, bilgisayarımın arkasındaki com bağlantı noktasına bağlanabilmem için seri bağlantı noktası terminali veya Xubuntu ile eşdeğer kullanabilmek istiyorum.

Herhangi bir fikir?

Yanıtlar:


39

Tty cihazları "dialout" grubuna aittir, bu grubun üyesi olmadığınızdan ve / dev / ttyS0'a erişiminin engellendiğinden şüpheleniyorum, bu yüzden kendinizi bu gruba eklemeniz gerekiyor.

Öncelikle bu grubun üyesi olup olmadığınızı kontrol edin:

groups ${USER}

.. ait olduğunuz tüm grupları listeleyecektir. Dialout grubuna ait değilseniz, kendinizi buna ekleyin, örneğin:

sudo gpasswd --add ${USER} dialout

Daha sonra etkili olması için oturumu kapatıp tekrar oturum açmanız gerekir. Ardından, sorununuzu çözüp çözmediğine bakın.


1000 numaralı id ile diyalog grubu kullanıcısı bile okumak için seri port açamaz. Yeniden başlattıktan sonra. Ama aynı yürütülebilir dosya için sudo kullandığımda, o zaman açabilirsiniz /dev/ttyS0. Olası sebep nedir?
Tomilov Anatoliy

3
@Orient Ben aynı sorun vardı ve bunun nedeni grup dialouttanımlanmadı. Çalışmak newgrp dialoutsorunu düzeltti.
TheGr8_Nik

@ TheGr8_Nik Teşekkürler. Çözümünüz Ubuntu 16.04 üzerinde çalıştı. Yeniden başlatma yok. Varsayılan olarak, bu sistem grup adına sahip değildi dialout; groupskomut ile kontrol edilir . dialoutKomut yoluyla gruba kullanıcı adı ekledikten sonra bile sudo usermod -a username -G dialout. Kullandıktan sonra newgrp dialoutbu komut esptool.py -p /dev/ttyUSB0 flash_idçalıştı.
Sun Bear

11

Benim için çalışan tek çözüm: (makineyi her başlattığımda)

sudo chmod 666 /dev/ttys0

Kurulum sırasında gerçekten düzeltilmesi gerekiyor. Ben 15.10 ve 16.04 LTS denedim, hala orada aynı. Bu kadar basit bir düzeltme gibi görünüyor.

10.04LTS eski sürümlerinde bu sorun yoktu.


2
Bu çalışma ahududu pi 3 ile ama ben yeniden başlattığınızda izinleri kaybetti.
J261

1
Diyalog için kullanıcı adıma izin eklemek iyi, oldukça basit bir düzeltme çalıştı.
DRJ101

6

Sadece bu komutu kullanabilirsiniz:

sudo adduser $USER dialout

Bu işlem geçerli kullanıcıyı diyalog grubuna ekler. Etkili olması için giriş yapın ve çıkış yapın.


4

Ubuntu 18.04'te bu sorunu aşağıdaki komutlarla çözdüm:

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

Ve bundan sonra yeniden başlatın.

Hâlâ sorun yaşıyorsanız, hata ayıklamayı deneyin:

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

Ve şeritte "reddedildi" yi arayın.


3

Çeşitli forumlar etrafında bir göz vardı ve izinlerle ilgili bir hata gibi görünüyor. İşte bu sorunun üstesinden nasıl geldim (uzun versiyon). İKİ cuve setserialpakete ihtiyacınız olacak .

Üç terminal sekmesinde, izlenen çıkış # tail -f /var/log/messages Bu şekilde bir /dev/ttyUSB0ya da sahip olmadığımızı biliyoruz .

İkinci sekmede, ls -lizinlerini görmek için bu cihaza bir döngü çalıştırdı ve grup kimliği 'diyalog'. BU kritik nokta. Herhangi bir nedenle, kullanıcınız bu GID'yicu , bu yüzden ...

Üçüncü sekmede, kök olarak # newgrp dialout(diyalogun GID'sine karşılık gelmek için) yaptı. Şununla test edildi # touch /tmp/anything... ls -lBu dosyada yaptığım , bir diyalog grubuyla kök tarafından oluşturulduğunu gösteriyor, bu yüzden hazırız ... # cu -l /dev/ttyUSB0 Benim durumumda, beklenen istemi görmek için tekrar geri dönmem gerekiyordu, diğer durumlarda hız gerekebilir belirtilmelidir.


Bu bana yardımcı fiili parçaydı: Nedense, kullanıcı ... yani, cu yapmak için bu GID'yi kullanmalıdır . Milyonlarca kez teşekkürler.
ΤΖΩΤΖΙΟΥ

1

İşte çözüm:

İşletim sistemimi Ubuntu 18'e güncellemiştim. Normalde Ubuntu Yazılım portalı aracılığıyla sağlanan yazılım her zaman daha eski bir sürüm olduğundan Arduino web görüşüyle ​​arduino IDE'yi kurardım ve en yeni özellikleri ve kart desteğini istedim. Ancak, en yeni işletim sistemini yeni kurduğumdan beri, ubuntu'nun resmi yazılım merkezinin IDE'nin en yeni sürümüne sahip olacağını düşündüm ve bunu yaptı.

Şimdi sulu kısma! Hem dizüstü bilgisayarımda hem de masaüstümde seri bağlantı noktalarına erişimde aynı sorunlar vardı. i çevirmeli ağ grubunun bir parçası yapmak yapmış ve seri bağlantı noktası için izinleri ayarlamıştı, ama her zaman her yeniden başlattığınızda tekrar oturum, her zaman tekrar yapmak zorunda kaldım! EĞLENCELİ DEĞİL!.

Bu sefer işe yaramadı. Yazılım merkezinde bile yazılım izinleri seri bağlantı noktasını "bağlı değil" olarak gösterir. sudo kullanılarak tüm izinler terminal penceresinden manuel olarak verildikten sonra bile bağlantı noktasına izin verme seçeneği yoktur.

Arduino IDE'yi yazılım merkezinden kaldırmaya ve web görüşünden yüklemeye karar verdim, bu yüzden yaptım. Bu sefer kurulum dosyalarını okudum, sadece seri port için izinlerden bahsedip bahsetmediğini görmek için, tabii ki yaptı! ****** tüm bağlantı noktaları tam erişim izinleri, kullanıcı kartı genelinde erişim ile ayarlanır. Yanıtın bu olduğu ortaya çıktı. arduino tarafından sağlanan arduino-linux-setup.sh dosyasını çalıştırdıktan sonra, tüm seri port problemleri çözüldü. aşağıdakiler arduino-linux-setup.shdosyadan bir alıntıdır ;

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

}

KERNEL'in bile etkilendiğini görüyorsunuz. Benim önerim:

arduino ide web sitesinden yükleyin. onarılıncaya kadar yazılım merkezini şu anda yok sayın. Evet YAZILIM MERKEZİ, kurulum sırasında ve sonrasında sonsuza kadar seri bağlantı noktasında sapmalara izin vermiyor.

Sorun çözüldü!


0

Benim durumumda kullanıcı hala gruba kullanarak eklemek bile sorun hala var:

Yani kullandığımda:

sudo gpasswd --add ${USER} dialout

ve ben yazarken: groupsBu sonucu aldım:

ilyahoo adm cdrom sudo dip plugdev lpadmin sambashare

Ama ben id -Gn ilyahooputput yazarken:

ilyahoo adm tty dialout cdrom sudo dip plugdev lpadmin sambashare 

Dürüstçe ne olduğunu bilmediğim bir sorun olduğunu biliyorum.

Bir çözüm elde etmek için yeni yazdım

newgrp ilyahoo

ve sorun giderildi.


İlyahoo askubuntu hoş geldiniz! Lütfen yayını kılavuz satırımıza göre biçimlendirmeyi deneyin. Çıktıyı daha okunabilir bir şekilde biçimlendirmeye çalışın. Teşekkürler
abu_bua

1
@ abu_bua lütfen komut çıktısı için kod biçimlendirmesi kullanın, alıntı biçimlendirme değil.
muru

0

Cevap basit. USB bağlantı noktalarına erişebilmek için kullanıcılarınızı iki gruba eklemeniz gerekir. Bu gruplar dialoutve tty:

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

<user>Bu komutlardaki gerçek kullanıcı adıyla değiştirin .

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.