2013-06-05 15 views
5

Ho installato Stino su Sublime Text con successo 2, ma quando provo a caricare il mio codice per Arduino Uno, l'uscita è la seguente:codice di caricamento Can not a Arduino Uno utilizza Stino e Ubuntu 12.04 (Precise Pangolin)

Caricamento /home/lucas/Arduino_Build/programa_teste/programa_teste.hex di Arduino Uno ...
avrdude: ser_open(): non può dispositivo aperto "/ dev/ttyACM0": autorizzazione negata
ioctl ("TIOCMGET"): Ioctl inappropriato per il dispositivo
[Stino - Errore durante il caricamento.]

Ho installato Arduino IDE, e funziona correttamente, solo il testo sublime non può caricare il codice.

+1

Gestisci l'IDE Arduino con 'sudo'? Autorizzazione negata significa che potrebbe essere necessario il permesso di amministratore. –

+2

@Bibhas: l'esecuzione dell'editor arduino con 'sudo' per gestire i problemi relativi alle autorizzazioni è MOLTO LA ** SOLUZIONE ERRATA **. È come risolvere un problema con le gomme della tua auto incendiandole e fingendo che fosse così quando l'hai trovato. L'OP deve risolvere correttamente il problema dei permessi, non solo intonacarlo con un buco di sicurezza. –

risposta

4

bene, come dice @Bibhas, il tuo problema è che /dev/ttyACM0 ha i permessi sbagliati, e che non ha nulla a che fare con Arduino o testo sublime. È il kernel linux che crea dispositivi di carattere per impostazione predefinita senza autorizzazioni utente.

Ma la cosa buona è che può essere cambiato!

La soluzione facile e veloce è quello di aggiungere l'utente corrente al gruppo dialout:

sudo adduser YOU dialout 

dove te è il tuo nome utente e quindi disconnettersi e riconnettersi per avere quelle nuove autorizzazioni propagate nelle vostre conchiglie.

Suggerimento:

C'è una soluzione che è un po 'più complicato, è quello di creare una regola udev come ad esempio:

/etc/udev/rules.d/48-arduino.rules

SUBSYSTEM!="usb_device", ACTION!="add", GOTO="arduino_end" 
SUBSYSTEM=="tty", ATTRS{idVendor}=="2341", ATTRS{idProduct}=="0036", MODE="660", GROUP="arduino", SYMLINK+="arduino.leonardo" 
LABEL="arduino_end" 

che crea un /dev/arduino dispositivo di lettura e scrittura da parte del gruppo di arduino, che è necessario creare (o è possibile utilizzare la dialout gruppo di default, che è perfettamente bene):

addgroup arduino 
adduser YOU arduino 

e quindi ricaricare le regole:

sudo udevadm control --reload-rules 

La cosa bella di quel secondo suggerimento è che quando si scollega ricollegare l'arduino, non si avrà cambia numero di dispositivo stranamente, sarà tenuto al nome. Se non stai utilizzando un Leonardo Arduino, è possibile controllare il dispositivo idVendor/idProduct utilizzando lsusb:

% lsusb     
…      ↓↓↓↓ ↓↓↓↓ 
Bus 006 Device 105: ID 2341:0036 Arduino SA 
… 

HTH

+0

Grazie a @zmo, il tuo primo consiglio ha funzionato per me! –

+0

sei il benvenuto, ma dovresti assolutamente provare il secondo consiglio, in quanto ti eviterà problemi durante la connessione del dispositivo! – zmo

0

Accoding il Troubleshooting doc, io uso

sudo usermod -a -G tty yourUserName 
sudo usermod -a -G dialout yourUserName 

risolvere il mio problema.

0

Ho lo stesso problema oggi e l'incredibile successo. Il cavo USB ha dato energia ad Arduino, ma non consente la comunicazione.La soluzione per noi era cambiare il cavo USB, dopodiché tutto funzionava