Pages: [1]   Go Down
Author Topic: [Risolto] Arduino funziona solo con permessi di root  (Read 1414 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 0
Posts: 2
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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:
sudo arduino
tutto funziona alla perfezione.
Per maggiori informazioni vi posto l'output dei seguenti comandi:
Code:
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:
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:
ls -ld /dev/ttyUSB*
crw-rw---- 1 root uucp 188, 0 27 giu 10.48 /dev/ttyUSB0

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

contenuto di ~/.arduino/preferences.txt:
Code:
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.
« Last Edit: June 27, 2012, 06:55:55 am by spider-net » Logged

Global Moderator
Italy
Offline Offline
Brattain Member
*****
Karma: 332
Posts: 22811
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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:
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:
sudo nano /etc/rc.local


ed aggiungi in fondo al file queste righe:

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


Offline Offline
Newbie
*
Karma: 0
Posts: 2
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ti ringrazio!  smiley-kiss
Mi hai risolto un problema che mi assillava da tempo.
Grazie ancora.
Logged

Global Moderator
Italy
Offline Offline
Brattain Member
*****
Karma: 332
Posts: 22811
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Ti ringrazio!  smiley-kiss
Mi hai risolto un problema che mi assillava da tempo.
Grazie ancora.
Era tempo che tu chiedessi  smiley-wink
Logged


Global Moderator
Italy
Offline Offline
Brattain Member
*****
Karma: 332
Posts: 22811
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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:
cd /etc/systemd/system
sudo nano rc-local.service

Ora copiamo in quel file il seguente testo:
Code:
[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:
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:
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:
sudo chmod +x /etc/rc.local
per sicurezza
« Last Edit: October 07, 2012, 12:00:19 pm by leo72 » Logged


0
Offline Offline
Shannon Member
****
Karma: 131
Posts: 10473
:(){:|:&};:
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

/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:
d /run/lock 0755 root root -
in
Code:
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:
d /run/lock 0775 root lock -

e per aggiungersi al gruppo lock (nel caso il vosto utente sia nomeUtente, per esempio):
Code:
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
« Last Edit: October 07, 2012, 04:11:35 pm by lesto » Logged

sei nuovo? non sai da dove partire? leggi qui: http://playground.arduino.cc/Italiano/Newbie

Global Moderator
Italy
Offline Offline
Brattain Member
*****
Karma: 332
Posts: 22811
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Domani provo
Logged


0
Offline Offline
Shannon Member
****
Karma: 131
Posts: 10473
:(){:|:&};:
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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.
Logged

sei nuovo? non sai da dove partire? leggi qui: http://playground.arduino.cc/Italiano/Newbie

Global Moderator
Italy
Offline Offline
Brattain Member
*****
Karma: 332
Posts: 22811
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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  smiley-wink
Logged


0
Offline Offline
Shannon Member
****
Karma: 131
Posts: 10473
:(){:|:&};:
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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 smiley
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)...
Logged

sei nuovo? non sai da dove partire? leggi qui: http://playground.arduino.cc/Italiano/Newbie

Global Moderator
Italy
Offline Offline
Brattain Member
*****
Karma: 332
Posts: 22811
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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 smiley
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.
Logged


0
Offline Offline
Shannon Member
****
Karma: 131
Posts: 10473
:(){:|:&};:
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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
Logged

sei nuovo? non sai da dove partire? leggi qui: http://playground.arduino.cc/Italiano/Newbie

Global Moderator
Italy
Offline Offline
Brattain Member
*****
Karma: 332
Posts: 22811
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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ù.
Logged


Pages: [1]   Go Up
Jump to: