Modifica delle autorizzazioni sulla porta seriale


54

Sto usando l'IDE Arduino in Ubuntu e ho problemi con la porta seriale. Ha funzionato in passato, ma per motivi che potrebbero non essere necessari, ho sentito la necessità di cambiare la proprietà di alcuni file dalla proprietà di root alla proprietà dei miei utenti.

Ciò ha fatto funzionare l'IDE correttamente, ma ho perso la possibilità di utilizzare la porta seriale corretta. Nella cartella dev, la porta di cui ho bisogno è elencata come permesso 166. Qualcuno (che non è più nella zona per aiutarmi) ha scambiato i permessi con 666, il che ha reso tutto gloriosamente funzionante.

Tuttavia, è tornato indietro non appena ho riavviato il mio computer e se ora provo a utilizzare il comando:

sudo chmod 666 ttyACM0

non succede nulla. Nessun messaggio di errore, ma nessuna modifica dell'autorizzazione.

Come posso cambiarlo e come posso farlo cambiare permanentemente.

Mi scuso se questa domanda è eccessivamente semplicistica o poco chiara, sono un nub di Ubuntu e non vorrei elogiare il feedback!


1
sudo chmod 666 / dev / ttyACM0 Questo è stato l'unico suggerimento in questa pagina che ha funzionato sul mio ambiente live 14.04 beta2. Grazie!

Risposte:


76

Il problema con le autorizzazioni per /dev/ttyACM0può essere risolto permanentemente aggiungendo te stesso al dialoutgruppo. Dovrai disconnetterti e riconnetterti prima di riconoscere la modifica del gruppo.

Puoi farlo con sudo usermod -a -G dialout $USER


Ho imparato questo quando Arduino IDE ha chiesto di dare a root per aggiungersi al "gruppo Dailout". Ora so di cosa si tratta.
Ufoguy,

Ho appena acquistato un adattatore Pulse-Eight USB - CEC da utilizzare con la mia nuova TV e ho scoperto che inizialmente non funzionava con Kodi in Ubuntu. Dopo aver verificato il registro degli arresti anomali e cercato su Google il messaggio di errore "ERRORE: CecLogMessage - errore durante l'apertura della porta seriale '/ dev / ttyACM0': autorizzazione negata", come risultato è stata visualizzata questa pagina. Grazie a te (e Don Kirkby, sotto - anche quello funziona), sono stato in grado di correggere immediatamente il problema.
Rich.T.

Inoltre, la risposta di "user247020" mi ha dato un'altra soluzione: aprire lo strumento GUI "Utenti e gruppi" e diventare un "amministratore". Questo ti aggiungerà al gruppo "dialout" (es. "Usa modem"), tra gli altri.
Rich.T.

usermod -a -G dialout pi funziona bene, dopo sudo chgrp dialout / dev / ttyS0 e funziona bene ma quando riavvio la configurazione è persa. Sono su Raspberry Pi 3
J261

Aggiungi qualsiasi comando che devi ripetere in uno script di avvio. Quindi bash o / etc / profile o init.
Rinzwind,

20

Non ho potuto far funzionare il suggerimento di Rinzwind , perché si lamentava che l'account utente esistesse già. Invece, ho usato questo comando per aggiungere un utente esistente ( terrik) a un gruppo esistente ( dialout), come descritto nella Guida in linea di Ubuntu .

sudo adduser terrik dialout

Utile anche questo comando per elencare i tuoi gruppi attuali, anche se come dice Rinzwind, devi disconnetterti e accedere prima che la porta seriale inizi a farti entrare.

groups terrik

10

Non riuscivo a far funzionare la risposta di Terrik , ma potrei farlo se avessi apportato questa leggera modifica al percorso ttyACM0.

sudo chmod 666 /dev/ttyACM0

Pubblicherei come commento ma non ho ancora i privilegi per questo ...


1
Le autorizzazioni sembrano reimpostare quando si scollega e si ricollega Arduino.
user1063287

non funziona. :(
Freddy

funziona pure. ma richiede la regola di udev per autorizzare nuovamente la riaccensione
pylover

Ho provato sudo chmod 666 /dev/ttyACM0e non funziona quando si riavvia. Qualcuno ha una soluzione?
user1063287

Hmm peepz questo funziona .... Aggiungi il comando a uno script di avvio. (/ Dev viene ricreato all'avvio, quindi è necessario ripetere questo comando ogni avvio)
Rinzwind

10

Un'altra possibilità è quella di creare un file delle regole nella /etc/udev/rules.d/directory. Ho avuto un problema simile e ho creato il 50-myusb.rulesfile nella directory sopra con questo contenuto:

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

Si noti che ciò consentirà a qualsiasi dispositivo collegato alle autorizzazioni di lettura / scrittura del socket ttyACM. Se hai bisogno solo di un dispositivo specifico per ottenere le autorizzazioni di lettura / scrittura, devi anche controllare idVendore idProduct. Puoi trovarli eseguendo il lsusbcomando due volte, una volta senza il tuo dispositivo collegato e una volta quando è collegato, quindi osserva la linea aggiuntiva nell'output. Lì vedrai qualcosa di simile Bus 003 Device 005: ID ffff:0005. In questo caso idVendor = ffffe idProduct = 0005. Il tuo sarà diverso. Di modificare il file delle regole in:

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

Ora solo questo dispositivo ottiene le autorizzazioni. Leggi questo per saperne di più sulla scrittura di regole udev.


2

Prova ad accedere a Sistema / Utenti e gruppi e a selezionare la casella sul tuo nome utente nel gruppo TTY.


[Errno 13] Permission denied: '/dev/ttyACM0'. Oltre al ttygruppo, l'utente è anche nel dialoutgruppo. Linux Mint 17.1.
user1063287

1
@ user1063287 Provasudo chmod a+rw /dev/ttyACM0
Vladimir S.
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.