Terminale porta seriale> Impossibile aprire / dev / ttyS0: autorizzazione negata


19

Avevo Windows XP su questa scatola e non è riuscito. Pensando che fosse un sistema operativo danneggiato, ho provato a reinstallare e non è riuscito. Ma poi ho provato a installare Ubuntu e non sono riuscito a eseguirlo dall'USB o dall'HD.

Il test mem e ha scoperto che uno dei miei stick da 512 MB (aveva 2) non è riuscito. Ho rimosso quello cattivo e sono stato in grado di installare Ubuntu ma era lento.

Stavo cercando di configurare rapidamente la mia radio a pacchetto per l'uragano Sandy. Ho scaricato il terminale della porta seriale ed è stato in grado di ottenere un certo utilizzo, ma il sistema ha continuato a bloccarsi. Quindi ha installato Xubuntu accanto ad esso, pianificando di esaurirsi il giorno successivo per ottenere RAM per la scatola. Metti Xubuntu e ora sto ottenendo il seguente errore con il terminale della porta seriale .:

Cannot open /dev/ttyS0: Permission denied

Vorrei essere in grado di utilizzare il terminale della porta seriale, o equivalente con Xubuntu in modo da poter usare il mio terminale del pacchetto kpc3, connettermi alla porta COM sul retro del mio computer.

Qualche idea?

Risposte:


39

I dispositivi tty appartengono al gruppo "dialout", sospetto che tu non sia un membro di questo gruppo e quindi gli venga negato l'accesso a / dev / ttyS0, quindi devi aggiungerti a quel gruppo.

Prima controlla se sei un membro di quel gruppo:

groups ${USER}

..questo elencherà tutti i gruppi a cui appartieni. Se non appartieni al dialout grup, aggiungiti ad esso, ad esempio:

sudo gpasswd --add ${USER} dialout

È quindi necessario disconnettersi e riconnettersi per renderlo efficace. Quindi vedere se risolve il problema.


Anche essere in un gruppo di gruppi di utenti con ID 1000 non può aprire la porta seriale da leggere. Dopo il riavvio. Ma, quando uso sudo per lo stesso eseguibile, è in grado di aprirlo /dev/ttyS0. Qual è la possibile ragione?
Tomilov Anatoliy,

2
@Orient Ho avuto lo stesso problema ed è stato perché il gruppo dialout non era definito. L'esecuzione ha newgrp dialoutrisolto il problema.
TheGr8_Nik l'

@ TheGr8_Nik Grazie. La tua soluzione ha funzionato su Ubuntu 16.04. Nessun riavvio coinvolto. Per impostazione predefinita, questo sistema non aveva il nome del gruppo dialout; controllato tramite groupscomando. Anche dopo aver aggiunto il nome utente al dialoutgruppo tramite comando sudo usermod -a username -G dialout. Dopo aver usatonewgrp dialout , questo comando ha esptool.py -p /dev/ttyUSB0 flash_idfunzionato.
Sun Bear

11

L'unica soluzione che funziona per me è: (ogni volta che avvio la macchina)

sudo chmod 666 /dev/ttys0

Deve davvero essere riparato al momento dell'installazione. Sono il 15.10 e ho provato 16.04 LTS, sempre lo stesso lì. Sembra una soluzione così semplice.

Le versioni precedenti 10.04LTS non presentavano questo problema.


2
questo lavoro con raspberry pi 3 ma al riavvio ho perso i permessi.
J261,

1
L'aggiunta di autorizzazioni al mio nome utente per dialout ha funzionato bene, soluzione abbastanza semplice.
DRJ101,

6

Puoi semplicemente usare questo comando:

sudo adduser $USER dialout

Ciò aggiungerà l'utente corrente al gruppo dialout. Effettua il login e lo fuori per avere effetto.


4

Su Ubuntu 18.04, ho risolto questo problema con i seguenti comandi:

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

E dopo questo, riavvia.

Se i problemi persistono, prova a eseguire il debug con:

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

E cerca "negato" nella striscia.


3

Ho dato un'occhiata a vari forum e sembra essere un bug relativo alle autorizzazioni. Ecco come ho risolto il problema (versione lunga). Avrai bisogno di ENTRAMBI cuesetserial pacchetti installati.

In tre schede terminali, output monitorato # tail -f /var/log/messages È così che sappiamo se abbiamo un/dev/ttyUSB0 o meno.

Nella seconda scheda, esegui semplicemente un ciclo su ls -lquesto dispositivo per vedere i suoi permessi e il suo ID di gruppo è 'dialout'. QUESTO è il punto critico. Per qualche motivo, l'utente DEVE utilizzare questo GID per eseguire le operazioni cu, quindi ...

Nella terza scheda, come root, ha fatto # newgrp dialout(per corrispondere al GID di dialout). Testato con # touch /tmp/anything... facendo ls -lsu questo file mostra che è stato creato da root con un gruppo dialout, quindi siamo pronti a ... # cu -l /dev/ttyUSB0 Nel mio caso ho dovuto premere di nuovo Invio per vedere il prompt previsto, in altri casi potrebbe essere necessario da specificare.


Questa è stata la parte reale che mi ha aiutato: Per qualche ragione, l'utente deve utilizzare questo GID per fare il cu, quindi ... . Grazie mille.
ΤΖΩΤΖΙΟΥ

1

Ecco la soluzione:

Avevo appena aggiornato il mio sistema operativo su Ubuntu 18. normalmente avrei installato arduino IDE tramite la vista web di Arduino perché quella fornita tramite il portale del software Ubuntu era sempre una versione precedente e volevo le nuove funzionalità e il supporto della scheda. Tuttavia, da quando ho appena installato il sistema operativo più recente, ho pensato che il centro software ufficiale di Ubuntu avrebbe elencato la versione più recente dell'IDE, e lo ha fatto.

Ora per la parte succosa! Sia il mio laptop che il mio desktop hanno avuto gli stessi problemi di accesso alle porte seriali. avevo fatto l'utente parte del gruppo di accesso remoto e impostato le autorizzazioni per la porta seriale, ma ho sempre dovuto disconnettermi e riconnettermi, ripetere tutto ogni volta che ho riavviato! NON È DIVERTENTE!.

Questa volta non ha funzionato. Anche nel centro software l'opzione di autorizzazione per il software mostra la porta seriale "disconnessa". nessuna opzione per consentire l'autorizzazione alla porta anche dopo che tutte le autorizzazioni sono state concesse manualmente attraverso la finestra del terminale usando sudo.

Ho deciso di disinstallare l'IDE di Arduino dal centro software e installarlo dalla vista Web, così ho fatto. Questa volta ho letto i file di installazione, solo per vedere se menziona i permessi per la porta seriale o no, ***** ovviamente lo ha fatto! ****** tutte le porte sono impostate con autorizzazioni di accesso complete, accesso utente su tutta la linea. Si è scoperto che questa era la risposta. dopo aver eseguito il file arduino-linux-setup.sh fornito da arduino, tutti i problemi della porta seriale sono stati risolti. il seguente è un estratto dal 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

}

quindi vedi che anche il KERNEL è stato effettuato. Il mio consiglio:

installa dal sito web di arduino ide. ignora il centro software in questo momento, fino a quando non viene riparato. Sì, il SOFTWARE CENTER non consente permessi alla porta seriale durante l'installazione e per sempre.

Problema risolto!


0

Nel mio caso il problema persiste, anche quando aggiungo il mio utente al gruppo usando:

Quindi quando uso:

sudo gpasswd --add ${USER} dialout

e quando scrivo: groupsho ottenuto questo risultato:

ilyahoo adm cdrom sudo dip plugdev lpadmin sambashare

Ma quando id -Gn ilyahooscrivo il putput è:

ilyahoo adm tty dialout cdrom sudo dip plugdev lpadmin sambashare 

So che c'è un problema che non so cosa sia onestamente.

Per ottenere una soluzione ho appena digitato

newgrp ilyahoo

e il problema è stato risolto.


Benvenuto ilyahoo a askubuntu! Prova a formattare i post in base alla nostra linea guida. Prova a formattare l'output in un modo più leggibile. Grazie
abu_bua,

1
@abu_bua utilizza la formattazione del codice per l'output del comando, non la formattazione del preventivo.
Muru,

0

La risposta è semplice Devi aggiungere il tuo utente a due gruppi per avere accesso alle porte USB. Questi gruppi sono dialoute tty:

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

Sostituisci <user>con il nome utente effettivo in quei comandi.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.