Go Down

Topic: [Risolto] Arduino funziona solo con permessi di root (Read 1 time) previous topic - next topic

Jun 27, 2012, 12:16 pm Last Edit: Jun 27, 2012, 01:55 pm by spider-net Reason: 1
Salve a tutti, sono nuovo del forum e anche di Arduino.

Come da titolo ho un problema con Arduino, ovvero, dopo aver seguito il wiki, per installare e configurare la mia scheda arduino (Luigino 328), ho un piccolo problema: avviando normalmente l'IDE, non riesco a caricare nessuno sketch, ottenendo questo errore: Porta seriale '/dev/ttyUSB0' non trovata., mentre avviando l'ide tramite
Code: [Select]
sudo arduino tutto funziona alla perfezione.
Per maggiori informazioni vi posto l'output dei seguenti comandi:
Code: [Select]
lspci | grep USB
00:1a.0 USB controller: Intel Corporation 82801I (ICH9 Family) USB UHCI Controller #4 (rev 03)
00:1a.1 USB controller: Intel Corporation 82801I (ICH9 Family) USB UHCI Controller #5 (rev 03)
00:1a.2 USB controller: Intel Corporation 82801I (ICH9 Family) USB UHCI Controller #6 (rev 03)
00:1a.7 USB controller: Intel Corporation 82801I (ICH9 Family) USB2 EHCI Controller #2 (rev 03)
00:1d.0 USB controller: Intel Corporation 82801I (ICH9 Family) USB UHCI Controller #1 (rev 03)
00:1d.1 USB controller: Intel Corporation 82801I (ICH9 Family) USB UHCI Controller #2 (rev 03)
00:1d.2 USB controller: Intel Corporation 82801I (ICH9 Family) USB UHCI Controller #3 (rev 03)
00:1d.7 USB controller: Intel Corporation 82801I (ICH9 Family) USB2 EHCI Controller #1 (rev 03)


Code: [Select]
dmesg
[ ... ]
[   81.556736] usb 5-1: new full-speed USB device number 2 using uhci_hcd
[   81.798633] usbcore: registered new interface driver usbserial
[   81.798673] usbcore: registered new interface driver usbserial_generic
[   81.798702] USB Serial support registered for generic
[   81.798742] usbserial: USB Serial Driver core
[   81.807131] usbcore: registered new interface driver ftdi_sio
[   81.807217] USB Serial support registered for FTDI USB Serial Device
[   81.807407] ftdi_sio 5-1:1.0: FTDI USB Serial Device converter detected
[   81.807481] usb 5-1: Detected FT232RL
[   81.807486] usb 5-1: Number of endpoints 2
[   81.807491] usb 5-1: Endpoint 1 MaxPacketSize 64
[   81.807496] usb 5-1: Endpoint 2 MaxPacketSize 64
[   81.807500] usb 5-1: Setting MaxPacketSize 64
[   81.810294] usb 5-1: FTDI USB Serial Device converter now attached to ttyUSB0
[   81.810331] ftdi_sio: v1.6.0:USB FTDI Serial Converters Driver


Code: [Select]
ls -ld /dev/ttyUSB*
crw-rw---- 1 root uucp 188, 0 27 giu 10.48 /dev/ttyUSB0


Code: [Select]
groups
lp wheel uucp network video audio optical storage power users


contenuto di ~/.arduino/preferences.txt:
Code: [Select]
export.application.fullscreen=false
preproc.imports.list=java.applet.*,java.awt.Dimension,java.awt.Frame,java.awt.event.MouseEvent,java.awt.event.KeyEvent,java.awt.event.FocusEvent,java.awt.Image,java.io.*,java.net.*,java.text.*,java.util.*,java.util.zip.*,java.util.regex.*
editor.font.macosx=Monaco,plain,10
preproc.web_colors=true
export.application.platform=true
update.check=true
update.id=3101164539915605654
editor.indent=true
serial.stopbits=1
serial.databits=8
editor.font=Monospaced,plain,12
editor.window.height.default=600
run.options.memory=false
editor.divider.size=0
editor.caret.blink=true
preproc.color_datatype=true
export.applet.separate_jar_files=false
preproc.output_parse_tree=false
run.window.bgcolor=#DFDFDF
console.lines=4
upload.using=bootloader
console.error.file=stderr.txt
run.options.memory.maximum=256
editor.tabs.expand=true
upload.verify=true
editor.window.height.min=290
editor.keys.home_and_end_travel_far=false
editor.languages.current=
board=atmega328
console=true
run.present.exclusive.macosx=true
serial.parity=N
editor.tabs.size=2
console.length=500
serial.port=/dev/ttyUSB0
run.options=
console.auto_clear=true
update.last=1340739941654
editor.window.width.min=400
run.present.exclusive=false
export.application.platform.linux=true
editor.keys.home_and_end_travel_far.macosx=true
run.present.bgcolor=#666666
export.application.platform.windows=true
target=arduino
run.options.memory.initial=64
editor.keys.alternative_cut_copy_paste=true
editor.window.width.default=500
console.output.file=stdout.txt
preproc.substitute_unicode=true
run.present.stop.color=#cccccc
editor.external=false
last.screen.height=768
editor.keys.shift_backspace_is_delete=true
last.sketch.count=0
export.delete_target_folder=true
last.sketch0.path=
preproc.substitute_floats=true
editor.keys.alternative_cut_copy_paste.macosx=false
browser.linux=mozilla
editor.invalid=false
serial.debug_rate=9600
browser=mozilla
sketchbook.path=/home/spider-net/sketchbook
export.application.stop=true
editor.divider.size.windows=2
preproc.enhanced_casting=true
run.display=1
launcher=xdg-open
platform.auto_file_type_associations=true
editor.antialias=false
programmer=arduino:avrispmkii
preproc.save_build_files=false
last.screen.width=1366
export.application.platform.macosx=true

ArchLinux i686 3.4.4-2-ARCH aggiornato a ieri.

leo72

Se hai Arch probabilmente sei incappato nel problema di filesystem
http://www.archlinux.it/forum/viewtopic.php?f=15&t=14723

Per risolvere, devi dare i permessi di accesso a /run/lock al tuo utente.
Dai da terminale:
Code: [Select]
sudo chmod o+rwx /run/lock

C'è un problema: ad ogni avvio il sistema rende quella cartella accessibile solo a root. Devi perciò farlo in modo permanente, per cui dopo dai
Code: [Select]
sudo nano /etc/rc.local

ed aggiungi in fondo al file queste righe:

Code: [Select]

#permessi per montare le schede Arduino
chmod o+rwx /run/lock

Ti ringrazio!  :*
Mi hai risolto un problema che mi assillava da tempo.
Grazie ancora.

leo72


Ti ringrazio!  :*
Mi hai risolto un problema che mi assillava da tempo.
Grazie ancora.

Era tempo che tu chiedessi  ;)

leo72

#4
Oct 07, 2012, 06:53 pm Last Edit: Oct 07, 2012, 07:00 pm by leo72 Reason: 1
Riapro questa discussione per aggiornare lo stato dei permessi di Arduino con il nuovo sistema di gestione dei servizi e demoni systemd.

Questo sistema sostituisce quello vecchio basato su init. Si può scegliere una configurazione mista init/systemd ma è preferibile passare al solo systemd. Se si passa ad una configurazione pura col solo systemd, gli utenti che hanno creato il file rc.local per eseguire dei comandi al boot avranno dei problemi, dato che systemd ignora quel file.
Questo vale anche per chi, come me, ha inserito lì il comando per dare i permessi per poter accedere alle porte seriali agli utenti normali al boot.

Per far funzionare nuovamente il file rc.local bisogna "ragionare" con la nuova logica di systemd, che prevede dei "servizi" da avviare al boot. Dobbiamo quindi creare un servizio che esegua quel file. Per far ciò, portiamoci in /etc/systemd/system e creiamo un nuovo file denominato rc-local.service:
Code: [Select]
cd /etc/systemd/system
sudo nano rc-local.service


Ora copiamo in quel file il seguente testo:
Code: [Select]

[Unit]
Description=/etc/rc.local Compatibility

[Service]
Type=oneshot
ExecStart=/etc/rc.local
TimeoutSec=0
StandardInput=tty
RemainAfterExit=yes

[Install]
WantedBy=multi-user.targe


Diamogli poi i permessi per essere eseguito ed assegnamolo a root (così non lo possiamo modificare come utente normale):
Code: [Select]
sudo chmod a+x rc-local.service
sudo chown root:root rc-local.service


Adesso attiviamo il servizio in modo che venga eseguito al prossimo riavvio:
Code: [Select]
sudo systemctl enable rc-local.service

Riavviamo e poi controlliamo che tutto sia filato liscio aprendo l'IDE di Arduino. Se in "Strumenti" la voce "Porta seriale" è selezionabile e compare l'elenco delle porte seriali tra cui scegliere quella a cui è collegato l'Arduino, allora è andato tutto bene.

EDIT:
controllate anche che il file /etc/rc.local abbia i permessi per essere eseguito. Nel caso, date un
Code: [Select]
sudo chmod +x /etc/rc.local
per sicurezza

lesto

#5
Oct 07, 2012, 11:07 pm Last Edit: Oct 07, 2012, 11:11 pm by lesto Reason: 1
/run/lock è creato a runtime da /usr/lib/tmpfiles.d/legacy.conf (sia in systemd che in init)

per cambiare il comportamento del legacy.conf basta copiarlo in /etc/tmpfiles.d/, poi basta cambiare la riga

Code: [Select]
d /run/lock 0755 root root -
in
Code: [Select]
d /run/lock 0777 root root -

o, molto meglio, assegnare la cartella al gruppo "lock", ovvero a coloro che hanno il permesso di usare i lock, e assicurarsi che il proprio utente sia nel gruppo lock:

quindi la riga diventa;
Code: [Select]
d /run/lock 0775 root lock -

e per aggiungersi al gruppo lock (nel caso il vosto utente sia nomeUtente, per esempio):
Code: [Select]
usermod -a -G lock nomeUtente

vantaggi:
.modifica unica sia sia per sistemd che per initV
.un servizio in meno, il che non fa mai male
.la modifica segue i "canoni" e quindi non è un hack
.ho notato che alcuni PC ricreano quelle cartelle anche dopo uno sleep, non sono sicuro che lo script in quel caso venga lanciato
sei nuovo? non sai da dove partire? leggi qui: http://playground.arduino.cc/Italiano/Newbie


lesto

già che c'ero ho agguiornato la guida sul wiki, per me ha funzionato tutto al primo colpo.
Anche il pasaggio a puro systemd, del quale sono molto soddisfatto.
sei nuovo? non sai da dove partire? leggi qui: http://playground.arduino.cc/Italiano/Newbie

leo72


Anche il pasaggio a puro systemd, del quale sono molto soddisfatto.

Anch'io. Addirittura systemd a fermare i servizi all'arresto del computer è molto più rapido rispetto a prima (init). Adesso ci metterà sì e no 2/3 secondi dalla chiusura del DE all'arresto materiale della macchina  ;)

lesto

vero, poi c'è già dentro systemd-analyze che è veramente un ottimo strumento per capire cosa sta rallentando il boot..
per esempio, il dhcp a me impiega quasi più di tutto il resto del boot, devo ancora capire come risolvere :)
per esempio il mio pc di casa impiega 17 secondi di boot, il rasp "solo" 10, ma ho visto che impostando accuratamente i vari servizi nell'userspace si scenda tranquillamente sotto i 6 secondi, compilando il kernel con i driver statici invece che con i moduli e qualche altro settaggio, ci sono persone che arivano a meno di due! secondi di boot, e stanno puntato a stare sotto al secondo (con HHD ssd)...
sei nuovo? non sai da dove partire? leggi qui: http://playground.arduino.cc/Italiano/Newbie

leo72


vero, poi c'è già dentro systemd-analyze che è veramente un ottimo strumento per capire cosa sta rallentando il boot..
per esempio, il dhcp a me impiega quasi più di tutto il resto del boot, devo ancora capire come risolvere :)
per esempio il mio pc di casa impiega 17 secondi di boot, il rasp "solo" 10, ma ho visto che impostando accuratamente i vari servizi nell'userspace si scenda tranquillamente sotto i 6 secondi, compilando il kernel con i driver statici invece che con i moduli e qualche altro settaggio, ci sono persone che arivano a meno di due! secondi di boot, e stanno puntato a stare sotto al secondo (con HHD ssd)...

Se usi networkmanager, come faccio io, non serve avviare dhcp. Ti riporto dal wiki:
Quote

Note: If you want to use netcfg, networkmanager or another software for managing the network you don't need to start/enable dhcpcd as seen on the previous paragraph.

Difatti io non l'ho messo tra i servizi da avviare né sul fisso né sul portatile e navigo senza problemi.

lesto

ah, sapevo che c'era il trucco.  :smiley-mr-green:

ho controllato, in teoria disabilitando dhcp dovrei risparmiare 8 secondi di boot  :smiley-eek:

il mio profilo: https://bbs.archlinux.org/viewtopic.php?pid=1167387#p1167387
sei nuovo? non sai da dove partire? leggi qui: http://playground.arduino.cc/Italiano/Newbie

leo72

A mente non ricordo che servizi ho abilitato, ma non sono molti.
Cmq il boot prenderà una quindicina di secondi. Poi ce ne sono altrettanti per caricare GDM poi più di mezzo minuto per aprire Gnome 3. Ma la lentezza nell'aprire Gnome 3 mi sa che deriva da tutte le estensioni che ho messo per personalizzare l'interfaccia, perché se avvio XFCE ci mette 10/15 secondi non di più.

Go Up