CH340G non funziona su Linux Mint

Ciao a tutti. Da giorni leggo discussioni simili alla mia ma non trovo la soluzione.
Ho un Arduino Nano 328, clone, con driver chip WCH CH340G. Ovunque leggo che su Linux si installa automaticamente, invece io sono l'unico sulla terra a cui non funziona. Su Windows ho installato il driver e funziona benissimo.
Su Linux Mint invece, la porta mi spunta opaca, come se non fosse collegato nulla.
Quale potrebbe essere il problema e come risolverlo.
Vi ringrazio anticipatamente.

Diciamo che su Linux il driver è probabilmente integrato nel kernel, non serve installare niente.

Detto questo, potresti banalmente non avere i permessi per accedere alla porta col tuo utente. Apri un terminale, collega il CH340, aspetta 10 sec e dai il comando dmesg (o sudo dmesg, non conosco Mint), quindi posta le ultime 20 righe che escono, o giù di lì.

Fatto:
[ 327.569706] usb 1-1.3: new full-speed USB device number 3 using ehci-pci
[ 327.662815] usb 1-1.3: New USB device found, idVendor=1a86, idProduct=7523
[ 327.662820] usb 1-1.3: New USB device strings: Mfr=0, Product=2, SerialNumber=0
[ 327.662823] usb 1-1.3: Product: USB2.0-Serial
[ 327.691453] usbcore: registered new interface driver usbserial
[ 327.691469] usbcore: registered new interface driver usbserial_generic
[ 327.691480] usbserial: USB Serial support registered for generic
[ 327.694627] usbcore: registered new interface driver ch341
[ 327.694634] usbserial: USB Serial support registered for ch341-uart
[ 327.694643] ch341 1-1.3:1.0: ch341-uart converter detected
[ 327.696454] usb 1-1.3: ch341-uart converter now attached to ttyUSB0
[ 328.289213] usb 1-1.3: USB disconnect, device number 3
[ 328.289425] ch341-uart ttyUSB0: ch341-uart converter now disconnected from ttyUSB0
[ 328.289444] ch341 1-1.3:1.0: device disconnected
[ 328.854015] usb 1-1.3: new full-speed USB device number 4 using ehci-pci
[ 328.947231] usb 1-1.3: New USB device found, idVendor=1a86, idProduct=7523
[ 328.947236] usb 1-1.3: New USB device strings: Mfr=0, Product=2, SerialNumber=0
[ 328.947239] usb 1-1.3: Product: USB2.0-Serial
[ 328.947668] ch341 1-1.3:1.0: ch341-uart converter detected
[ 328.949405] usb 1-1.3: ch341-uart converter now attached to ttyUSB0

Ok, la tua porta è /dev/ttyUSB0. Se fai:

sudo chmod 666 /dev/ttyUSB0

probabilmente funzionerà, ma non è un fix permanente. Per quello fai:

ls -l /dev/ttyUSB0

e posta quel che esce.

vegetablu:
[ 328.947668] ch341 1-1.3:1.0: ch341-uart converter detected
[ 328.949405] usb 1-1.3: ch341-uart converter now attached to ttyUSB0

Funziona, devi usare il device ttyUSB0, se provi a fare ""echo quellochetipare > /dev/ttyUSB0" vedrai che i dati arrivano verso Arduino, deve lampeggiare il led RX.

Ho fatto "sudo arduino" e adesso funziona!!!
Grazie!

Come faccio ad abilitare i permessi permanenti per questa porta e arduino??
grazie

Se lanci arduino con sudo funziona per forza, ma non è cosa molto saggia... Fai quel che ho scritto sopra.

SukkoPera:
Ok, la tua porta è /dev/ttyUSB0. Se fai sudo chmod 666 /dev/ttyUSB0 probabilmente funzionerà, ma non è un fix permanente. Per quello fai ls -l /dev/ttyUSB0 e posta quel che esce.

Ho fatto ls -l /dev/ttyUSB0 per come dicevi tu e mi esce:
crw-rw---- 1 root dialout 188, 0 ott 13 16:16 /dev/ttyUSB0

Bene, allora devi aggiungere il tuo utente al gruppo dialout. Non saprei se su Mint ci sia un qualche tool grafico apposta, oppure probabilmente basta:

usermod -a -G dialout tuoutente

SukkoPera:
Bene, allora devi aggiungere il tuo utente al gruppo dialout. Non saprei se su Mint ci sia un qualche tool grafico apposta, oppure probabilmente basta:

usermod -a -G dialout tuoutente

Da quando ho digitato "sudo arduino", anche se riavvio il pc, adesso funziona.
Devo eseguire lo stesso la stringa usermod -a -G dialout tuoutente oppure non serve??
grazie

ciao,
ho eseguito la guida fino a comando

usermod -a -G dialout nomeutente

e il terminale mi da questo messaggio

usermod: Permission denied.
usermod: cannot lock /etc/passwd; try again later.

come posso procedere?
grazie

Lo devi lanciare da root, oppure con sudo.

Massimodb:
ciao,
ho eseguito la guida fino a comando

usermod -a -G dialout nomeutente

e il terminale mi da questo messaggio

usermod: Permission denied.

usermod: cannot lock /etc/passwd; try again later.




come posso procedere?
grazie

SukkoPera:
Lo devi lanciare da root, oppure con sudo.

Come ti ha detto SukkoPera apri il terminale, e digita:

 sudo arduino

e digiti la password. Oppure ti logghi come root e poi apri sempre arduino da terminale.
:slight_smile:

No, con sudo deve lanciare solo lo useradd, poi è a posto e può lanciare arduino da utente normale.

vegetablu:
Come ti ha detto SukkoPera apri il terminale, e digita:

 sudo arduino

e digiti la password. Oppure ti logghi come root e poi apri sempre arduino da terminale.
:slight_smile:

SukkoPera non ha mai detto questo, e consiglio chiunque legga questa discussione di non farlo mai.
il comando giusto da dare è:

sudo usermod -a -G dialout nomeutente

oppure, se l'utente non è sudo:

su (password amministratore)
usermod -a -G dialout nomeutente

poi bisogna fare logout e di nuovo login (o riavviare) per permettere l'aggiornamento dei gruppi utente.

ricdata:
SukkoPera non ha mai detto questo, e consiglio chiunque legga questa discussione di non farlo mai.
il comando giusto da dare è:

sudo usermod -a -G dialout nomeutente

oppure, se l’utente non è sudo:

su (password amministratore)
usermod -a -G dialout nomeutente

poi bisogna fare logout e di nuovo login (o riavviare) per permettere l’aggiornamento dei gruppi utente.

Scusa l’ignoranza, ma cosa succede in quel modo come l’ho scritto io?
grazie

Succede che lanci l'intero applicativo con i permessi di root (amministratore), il che non è assolutamente necessario: Arduino può girare con permessi molto più ristretti, basta che abbia accesso alle porte seriali-USB, funzionalità permessa a tutti gli utenti del gruppo dialout. Per cui, una volta aggiunto il tuo utente a tale gruppo, sei a cavallo.

SukkoPera:
Succede che lanci l'intero applicativo con i permessi di root (amministratore), il che non è assolutamente necessario: Arduino può girare con permessi molto più ristretti, basta che abbia accesso alle porte seriali-USB, funzionalità permessa a tutti gli utenti del gruppo dialout. Per cui, una volta aggiunto il tuo utente a tale gruppo, sei a cavallo.

Grazie per le info. Quante cose c'è ancora da imparare ehehehe.
Queste cose sono istruttive infatti :slight_smile:

ricdata:
SukkoPera non ha mai detto questo, e consiglio chiunque legga questa discussione di non farlo mai.
il comando giusto da dare è:

sudo usermod -a -G dialout nomeutente

oppure, se l’utente non è sudo:

su (password amministratore)
usermod -a -G dialout nomeutente

poi bisogna fare logout e di nuovo login (o riavviare) per permettere l’aggiornamento dei gruppi utente.

Scusa il disturbo.
Ho analizzato la stringa sudo usermod -a -G dialout nomeutente.
In pratica in questo modo modifico l’user principale aggiungendolo in un gruppo secondario chiamato dialout.
Ho detto bene? Voglio imparare bene ehehehhe, quindi scusa le bestialità se le dico eheh.

L’opzione -a e l’opzione -G non sono simili? Perchè si danno entrambe??

Altra domanda. Dopo aver creato questo gruppo secondario dialout, non ci devo aggiungere l’eseguibile Ardunio?

Grazie

con quel comando aggiungi il tuo utente al gruppo "dialout". in questo modo l'utente in questione ha accesso alle risorse riservate a dialout, tra cui la comunicazione seriale che serve ad arduino.

vegetablu:
L'opzione -a e l'opzione -G non sono simili? Perchè si danno entrambe??

le opzioni non sono simili: "-a" sta per append, cioè aggiungi.
in pratica, al tuo utente, oltre ai gruppi di cui fa già parte, gli si aggiunge il gruppo (-G) dialout. se non specifichi -a l'utente viene rimosso da tutti i gruppi e viene aggiunto solo al gruppo dialout e questo ti creerà sicuramente problemi con altri programmi o periferiche.
per maggiori informazioni digita "sudo usermod --help" ed avrai la lista di tutte le opzioni di usermod con relativa spiegazione.

se vuoi sapere a quali gruppi fa parte il tuo utente basta dare il comando "groups".

vegetablu:
Altra domanda. Dopo aver creato questo gruppo secondario dialout, non ci devo aggiungere l'eseguibile Ardunio?

dialout è un gruppo predefinito di sistema, non lo hai creato. con quel comando hai semplicemente aggiunto un utente a quel gruppo. infine, no, non devi fare altro, solo riavviare :wink: