Problema Serial Port: Arduino UNO / IDE 1.0.1 su Ubuntu 12.04

Salve a tutti, oggi, dopo un bel po di tempo, ho ‘rimesso a moto’ Arduino. L’ho collegato al pc, ho fatto l’upload di un programmino per un MCU, fin qui tutto bene ma quando sono andato ad aprire il monitor seriale (e successivamente anche per nuovi upload) mi ha dato questo errore:

Error opening serial port '/dev/ttyACM0'
processing.app.SerialException: Error opening serial port '/dev/ttyACM0'.
	at processing.app.Serial.<init>(Serial.java:178)
	at processing.app.Serial.<init>(Serial.java:92)
	at processing.app.SerialMonitor.openSerialPort(SerialMonitor.java:207)
	at processing.app.Editor.handleSerial(Editor.java:2481)
	at processing.app.EditorToolbar.mousePressed(EditorToolbar.java:353)
	at java.awt.Component.processMouseEvent(Component.java:6285)
	at javax.swing.JComponent.processMouseEvent(JComponent.java:3267)
	at java.awt.Component.processEvent(Component.java:6053)
	at java.awt.Container.processEvent(Container.java:2045)
	at java.awt.Component.dispatchEventImpl(Component.java:4649)
	at java.awt.Container.dispatchEventImpl(Container.java:2103)
	at java.awt.Component.dispatchEvent(Component.java:4475)
	at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4633)
	at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4294)
	at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4227)
	at java.awt.Container.dispatchEventImpl(Container.java:2089)
	at java.awt.Window.dispatchEventImpl(Window.java:2587)
	at java.awt.Component.dispatchEvent(Component.java:4475)
	at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:675)
	at java.awt.EventQueue.access$300(EventQueue.java:96)
	at java.awt.EventQueue$2.run(EventQueue.java:634)
	at java.awt.EventQueue$2.run(EventQueue.java:632)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:108)
	at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:119)
	at java.awt.EventQueue$3.run(EventQueue.java:648)
	at java.awt.EventQueue$3.run(EventQueue.java:646)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:108)
	at java.awt.EventQueue.dispatchEvent(EventQueue.java:645)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:275)
	at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:200)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:190)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:185)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:177)
	at java.awt.EventDispatchThread.run(EventDispatchThread.java:138)
Caused by: gnu.io.UnsupportedCommOperationException: Invalid Parameter
	at gnu.io.RXTXPort.setSerialPortParams(RXTXPort.java:171)
	at processing.app.Serial.<init>(Serial.java:163)
	... 35 more

Non ha mai dato errori simili fino ad adesso, posso aggiungere che attraverso un altro programma posso leggere i dati inviati da Arduino sulla seriale, ma quando provo a comunicare attraverso l’IDE da questo errore.
Da cosa è dovuto?

Non lo so. Sono un utente Windows. :roll_eyes:
Però posso consigliarti di scaricare l'IDE 1.0.5 che risolve molti problemi delle versioni precedenti.

Già ho provato ma niente, nemmeno con l’ 1.0.5. =(

Ci sono già diverse discussioni aperte con problemi legati alla comunicazione seriale delle UNO sui sistemi Ubuntu con versione pari o successiva alla 12.04. Non si capisce tutta questa fioritura di problemi su Ubuntu.
E non c'entra Linux, io ho Arch Linux e non ho nessun problema.

FedericoC:
Non ha mai dato errori simili fino ad adesso, posso aggiungere che attraverso un altro programma posso leggere i dati inviati da Arduino sulla seriale, ma quando provo a comunicare attraverso l'IDE da questo errore.

Secondo me, visto che un pò di tempo fa ti funzionava, un aggiornamento di Ubuntu ha cambiato qualcosa nel sistema Ubuntu.

Sicuramente è così perché tutti quelli che hanno manifestato il problema dicono che prima gli funzionava, poi ad un certo punto ha smesso.

leo72:
Sicuramente è così perché tutti quelli che hanno manifestato il problema dicono che prima gli funzionava, poi ad un certo punto ha smesso.

Mi ha funzionato per un attimo e poi ha smesso. Mi spiego meglio: sono riuscito a programmarlo la prima volta e successivamente anche a leggere qualche dato inviato, poi la connessione si è interrotta e non sono più riuscito e comunicare. Pensate siano gli aggiornamenti di ubuntu?

Cos’hai caricato sull’Arduino?
Se hai messo un programma che spedisce dati alla seriale, probabilmente hai “ingorgato” la linea. Prova a fare la “manovra di emergenza” (cerca sul forum).

provato anche la "manovra di emergenza" ma niente:

Il tastino di reset non è come il reset del computer, che fa riavviare la macchina e cancella il programma in memoria. La memoria su cui è memorizzato lo sketch non è RAM, che si cancella senza alimentazione, è di tipo Flash e mantiene quindi il programma fino a successiva riprogrammazione.

La Manovra d'emergenza di solito serve quando il micro è bloccato sulla seriale ma a te non sembra bloccato sulla seriale, sembra invece "sordo", nel senso che non comunica più col computer.
Comunque è questa:

  1. apri l'IDE
  2. carichi uno sketch qualunque, anche il "blink" modificato (prova a mettere un delay doppio)
  3. prendi l'Arduino e metti il dito sul pulsante "reset".
  4. MENTRE tieni questo tasto pigiato, colleghi l'Arduino al PC
  5. adesso, MENTRE continui a tenere pigiato il pulsantino, premi il tasto di upload dello sketch
  6. ora rilasci il pulsantino di reset
  7. se hai trovato la sincronizzazione giusta tra la pressione del pulsante grafico di upload dello sketch ed il rilascio del reset, verrà caricato lo sketch.

idee? =(

Stesso mio problema (kubuntu 12.04). Arduino a me ha sempre funzionato bene però un bel(brutto) giorno si è bloccato manifestando lo stesso comportamento, sketch caricato e poi niente. Credo sia un problema di qualche aggiornamento legato ai permessi di rxtx. Non ho risolto.

Avete modo di tornare alla versione precedente di rxtx?

Purtroppo no, ho provato tutto ciò che mi avete suggerito (tra cui anche provare con la versione dei repository che nel mio caso è la 1.0) ma niente.

Però anche nel tuo caso, se lanci l'IDE da terminale con sudo riesci ad accedere all'Arduino?

Riprovato ora ora con Ubuntu 12.04, di solito uso Windows XP.

A me funziona. Ma non ho più fatto aggiornamenti.
Classico blink ma con delay e attivazione Serial in setup()

int led = 13;
void setup() {   
  delay(1000);
  Serial.begin(9600);
  Serial.print("go");  
  pinMode(led, OUTPUT);     
}

void loop() {
  digitalWrite(led, HIGH);   // turn the LED on (HIGH is the voltage level)
  delay(1000);               // wait for a second
  digitalWrite(led, LOW);    // turn the LED off by making the voltage LOW
  delay(500);               // wait for a second
}

Ma nel monitor seriale che velocità avete impostato? A qualcuno non dava problemi (ricordo un thread) su Ubuntu se c'era velocità inferiore a 9600?

C'era un bug su alcune versioni dell'IDE localizzate che se andavi a cambiare la velocità dal menu a tendina presente nel serial monitor l'IDE crashava. Si risolveva mettendo la lingua inglese oppure aggiornando l'IDE.

@nid:
ma tu usi l'Arduino dei repo o quello del sito?

Ho fatto gli aggiornamenti, riavviato ma mi funziona senza problemi.

Io installai la prima volta Arduino dal repository. E mi sembra fosse la 1.0.3
Poi ho deciso di aggiornarla, scaricando dal sito la versione 1.0.5
L'ho spacchettata e poi ho copiato brutalmente la cartella del nuovo sulla vecchia.

nid69ita:
Io installai la prima volta Arduino dal repository. E mi sembra fosse la 1.0.3
Poi ho deciso di aggiornarla, scaricando dal sito la versione 1.0.5
L'ho spacchettata e poi ho copiato brutalmente la cartella del nuovo sulla vecchia.

Argh... da non fare mai, se c'è qualche file diverso poi apt-get si incarta quando vuoi disinstallare il pacchetto.

Ma repository di Ubuntu mi dava ancora la 1.0.3 quando ormai la 1.0.5 era uscita da mesi.
Ora non ho Ubuntu aperto, ma secondo me scarica ancora la 1.0.3. Ma non ne sono sicuro.

Purtroppo Ubuntu tende a non aggiornare molto i software di una versione specifica, gli aggiornamenti maggiori li fa di versione in versione. Conviene sempre passare all'ultima del sito, se non si vuole aggiornare l'intero sistema.

Resta da capire cos'è che viene aggiornato ad un certo punto che manda in tilt l'apertura della seriale emulata ACMx.

Fra l'altro, ho visto che Mega e Uno usa ttyACM0 mentre Nano e Mini Pro usano ttyUSB0.
Ho letto qui il perchè:

Non conosco molto Linux, abituato a Windows che assegna a ogni device USB un COMxx.
Sinceramente in Windows mi sembra una cavolata che fà crescere a dismisura il numero di COMxx, preferisco Linux.

P.S. ho riprovato adesso, sia con Uno che Nano e Arduino IDE 1.0.5 tutto okay.
Ho installato su Ubuntu più che altro programmi di sviluppo, tipo Gambas, Anjuta, Eagle, MySql, cose così.