Forum della comunità italiana di EeePC.it e NetbookNews.it
Non hai eseguito l'accesso.
Utilizzare la funzione di ricerca del forum e leggere le faq prima di inserire una nuova discussione.
26/08/10: aggiornato il regolamento.
Salve a tutti. E' da tempo che stringo i denti quando sfilo una pen drive dal pc. Su windows, quando smonto una pen drive, viene disabilitata l'alimentazione, potendo così staccare il dispositivo senza problemi. Su linux questo non avviene... la penna viene smontata a livello software, ma l'alimentazione rimane attiva. Ovviamente staccare così "a strappo" la penna usb con l'alimentazione ancora attiva non è per niente salutare... è possibile risolvere questo problema? magari con uno script che disabiliti l'alimentazione quando si effettua un unmount...
Non in linea
Caspita è da mesi che ho questa paranoia e non trovo soluzione... nessuno ci ha fatto caso a questo problema? ![]()
Ultima modifica di Zamu (07-01-2009 04:06:55)
Non in linea
Non è un problema... sono fatte per essere collegate e scollegate anche così. L'importante è "smonta volume".
Ciao
Vinboy
Non in linea
Io avevo un problema diverso: volevo disalimentare il maledetto mouse ottico Asus fornito con l'eeeBox, perchè emette sempre una fastidiosa (sprattutto di notte!) luce rossa... l'idea di scollegarlo e ricollegarlo ogni volta non mi andava giù (e neanche quella di cambiare mouse
).
Alla fine mi sono creato uno script BASH che può:
- elencare le periferiche USB connesse
- verificare che, data una stringa, esista almeno una periferica USB il cui nome la contenga
- commutare lo stato di alimentazione della/e periferiche i cui nomi contengono la stringa fornita
per esempio:
sudo ./USBToggle.sh -l elenca le periferiche USB collegate
sudo ./USBToggle.sh -v "mou" elenca le periferiche USB collegate che hanno nel nome la stringa mou (case insensitive)
sudo ./USBToggle.sh -t "mou" cambia lo stato di alimentazione delle periferiche USB collegate che hanno nel nome la stringa mou (case insensitive)
Purtroppo lo script va eseguito con i privilegi di root (il cuore dello script scrive nella cartella /proc) ma si può aggirare la scomodità modificando il file /etc/sudoers ed aggiungendo alla fine
Cmnd_Alias USBTOGGLE=/path/dello/script/USBToggle.sh vostronomeutente ALL=NOPASSWD: USBTOGGLE
da ora in poi, solo per quello script, scrivendo
sudo ./USBToggle.sh etc etc
non sarà più richiesta la password...
Nota: non sono un esperto di Ubuntu/Linux, lo script è fornito così com'è (io lo uso da molto ormai e non mi ha mai creato danni), potrebbe essere ottimizzato, riscritto (ho intenzione di creare una applet per il pannello in python tipo montadischi!)... se apportate delle migliorie fatemelo sapere in questo thread (almeno imparo qualcosa!)
Ah, dimenticavo lo script!!!
USBToggle.sh
#!/bin/bash
# USB Power Switching Script
# Script to toggle power management status of USB devices
# by DanyTheBat
declare -a ARRAYDEV
declare -a ARRAYPROD
declare -a ARRAYPWRSTATUS
declare -a ARRAYMAXPWR
let nprod=0
function padl {
tmp=$2
while [ ${#tmp} -lt $1 ];
do
tmp="$tmp "
done
echo "$tmp"
}
function padr {
tmp=$2
while [ ${#tmp} -lt $1 ];
do
tmp=" $tmp"
done
echo "$tmp"
}
function lower {
echo "$(echo $1 | tr [:upper:] [:lower:])"
}
function query_level {
# level: on - auto - suspend
if [ -e $1/power/level ]; then
ARRAYPWRSTATUS[$nprod]=$(cat $devhome/power/level)
else if [ ! -e $devhome/power/level ]; then
ARRAYPWRSTATUS[$nprod]=NA
fi
fi
}
function scan_usb {
for idVendor in $(ls /sys/bus/usb/devices/*/idVendor); do
devhome=$(dirname $idVendor)
devlevel=$devhome/power/level
# if product, leo, else leo idvendor e idproduct
if [ -e $devhome/product ]; then
ARRAYPROD[$nprod]="$devhome"
ARRAYPRODDESC[$nprod]="$(cat $devhome/product)"
ARRAYMAXPWR[$nprod]="$(cat $devhome/bMaxPower)"
query_level $devhome
((nprod++))
else if [ -e $devhome/idVendor ]; then
ARRAYPROD[$nprod]="$devhome"
ARRAYPRODDESC[$nprod]="$(cat $devhome/idVendor):$(cat $devhome/idProduct)"
ARRAYMAXPWR[$nprod]="$(cat $devhome/bMaxPower)"
query_level $devhome
((nprod++))
fi
fi
done
}
function list_usb {
for element in $(seq 0 $((${#ARRAYPROD[@]} -1))); do
echo -e "|$(padl 25 "${ARRAYPRODDESC[$element]}")|$(padl 30 "(${ARRAYPROD[$element]})")|$(padr 11 "[${ARRAYPWRSTATUS[$element]}]")|$(padr 7 "${ARRAYMAXPWR[$element]}")|"
#echo -e "${ARRAYPRODDESC[$element]}\\t(${ARRAYPROD[$element]})\\t[${ARRAYPWRSTATUS[$element]}]\\t${ARRAYMAXPWR[$element]}"
done
}
function toggle_usb {
for element in $(seq 0 $((${#ARRAYPROD[@]} -1))); do
if [[ $(lower "${ARRAYPRODDESC[$element]}") =~ $(lower "$1") ]]; then
if [ "${ARRAYPWRSTATUS[$element]}" == "on" ] || [ "${ARRAYPWRSTATUS[$element]}" == "auto" ] ; then
echo "suspend" > ${ARRAYPROD[$element]}/power/level
echo -e "${ARRAYPRODDESC[$element]} switching from [${ARRAYPWRSTATUS[$element]}] to [suspend]"
else
echo "auto" > ${ARRAYPROD[$element]}/power/level
echo -e "${ARRAYPRODDESC[$element]} switching from [${ARRAYPWRSTATUS[$element]}] to [auto]"
fi
fi
done
}
function verify_usb {
for element in $(seq 0 $((${#ARRAYPROD[@]} -1))); do
if [[ $(lower "${ARRAYPRODDESC[$element]}") =~ $(lower "$1") ]]; then
return 0
fi
done
return 1
}
function get_usb_by_name {
for element in $(seq 0 $((${#ARRAYPROD[@]} -1))); do
if [[ $(lower "${ARRAYPRODDESC[$element]}") =~ $(lower "$1") ]]; then
echo -e "|$(padl 25 "${ARRAYPRODDESC[$element]}")|$(padl 30 "(${ARRAYPROD[$element]})")|$(padr 11 "[${ARRAYPWRSTATUS[$element]}]")|$(padr 7 "${ARRAYMAXPWR[$element]}")|"
fi
done
}
scan_usb
case $1 in
-l) echo -e
echo -e "USB Power Switching Script"
echo -e "------------------------------------------------------------------------------"
list_usb
echo -e "------------------------------------------------------------------------------"
echo -e
;;
-t) if [ ! "$2" == "" ] && verify_usb $2; then
toggle_usb $2
else
echo "Specify a valid USB Device: '$2' doesn' exist!!!"
fi
;;
-v) if verify_usb $2; then
echo -e
echo -e "USB Power Switching Script"
echo -e "------------------------------------------------------------------------------"
get_usb_by_name $2
echo -e "------------------------------------------------------------------------------"
echo -e
echo -e "'$2' USB Device exists!!!"
echo -e
else
echo -e
echo -e "USB Power Switching Script"
echo -e
echo -e "'$2' USB Device doesn't exist!!!"
echo -e
fi
;;
*) echo -e
echo -e "USB Mouse Power Switching Script"
echo -e "------------------------------------------------------------------------------"
echo -e "-l\\tList USB Devices"
echo -e "-t name\\ttoggle USB Device 'name' status"
echo -e "-v name\\tverify if USB Device 'name' exists"
echo -e
;;
esacUltima modifica di DanyTheBat (07-01-2009 07:04:57)
Non in linea
Beh disattivare l'alimentazione prima di toglierle direi che è decisamente più sicuro... non è certo un caso che su windows nello smontare i dispositivi venga disabilitata l'alimentazione. ![]()
Riguardo questo script... come lo posso utilizzare per le penne usb collegate? grazie mille comunque per aver condiviso uno script che personalmente trovo utilissimo ![]()
Non in linea
Io anche ho lo stesso problema, se n'è parlato anche sul forum di Ubuntu ma senza una soluzoine (tutti dicono ciiò che ha già detto Vinboy)! A me da ancora più fastidio quando invece che una chiavetta collgo il mio Nokia N82 che una volta "smontato" sul display del telefono mi compare la scrittas "Possibile perdita di dati" o quialcosa del genere, cosa che con Winzoz non succedeva per il motivo da te descritto...
Non in linea
Ragazzi siete sicuri che su win quando smontate una pen drive, viene disabilitata l'alimentazione. Io penso di no, il led non indica la presenza o no dell'alimentazione.
Una domanda, qual'è la procedura per smontare la pen drive sotto linux.
Grazie
Non in linea
@c3bo
non so se le pendrives si spengano effettivamente, ma un hard-disk usb, quando messo in suspend con questo script, spegne il motore e si arresta (lo farebbe da solo dopo qualche minuto, almeno quelli che ho io)
@Zamu
esegui
sudo ./USBToggle.sh -l
otterrai qualcosa tipo
USB Power Switching Script ------------------------------------------------------------------------------ |VMware Virtual USB Hub |(/sys/bus/usb/devices/1-2) | [auto]| 0mA| |U3 Titanium |(/sys/bus/usb/devices/2-1) | [on]| 200mA| |UHCI Host Controller |(/sys/bus/usb/devices/usb1) | [auto]| 0mA| |EHCI Host Controller |(/sys/bus/usb/devices/usb2) | [auto]| 0mA| ------------------------------------------------------------------------------
e nell'elenco che viene presentato cerca la tua pendrive (per esempio "U3 Titanium") , poi esegui
sudo ./USBToggle.sh -t "titan"
otterrai
U3 Titanium switching from [on] to [suspend]
e la pendrive dovrebbe essere spenta...
Ah, dimenticavo, rieseguendo l'ultimo comando sulla pendrive "spenta", il sistema si comporta come se l'avessimo ricollegata (non come Winzoz che ci costringe a disconnettere e riconnetere la pendrive!)
Ultima modifica di DanyTheBat (07-01-2009 08:27:42)
Non in linea
Ragazzi, non vorrei insistere, se volete utilizzate pure lo script (e grazie a Dany per il supporto) ma non c'è differenza a disalimentare un dispositivo in maniera software (via controllo software dedicato o opportuno script) o "hardware" (scollegarlo) se non è utilizzato dal sistema ("smonta volume") e non c'è passaggio di dati... io scollego penne usb su win senza disabilitare nulla (se non sono in fase di lettura o scrittura!) e miniSD dal mio N73 e non ho mai perso un bit o danneggiato nessun dispositivo.
Quando scollegate una penna USB disabilitandola con win la porta usb è comunque alimentata.
E' come schiacciare un interruttore "software" o "hardware"... il risultato è che va via la corrente ma se la periferica non è "montata" non c'è nessun problema.
Vinboy
Non in linea
Lungi da me l'affermare che è meglio spegnere le pendrives prima di disconnetterle... basta smontarle!
Il fatto è che lo script è nato per un altro uso (spegnere il maledetto mouse ottico con il suo faro!) ma può essere usato per qualsiasi periferica usb. Per quanto mi riguarda, a volte lo uso per spegnere gli hard-disks usb anche lasciandoli attaccati, evitando che il motore continui a girare... E poi mi sembra (scrivo sembra perchè una conferma al 100% non ce l'ho) che le periferiche usb che supportano la modalità "suspend" possano effettivamente spegnersi (o almeno porsi in una modalità a "basso consumo") prolungando l'autonomia di un portatile (e questo vale soprattutto per quelle periferiche che risultano connesse ad un bus usb ma che, di fatto, non possono essere fisicamente disconnesse, vedi la webcam dell'eeePc
).
Non in linea
DanyTheBat ha scritto:
Lungi da me l'affermare che è meglio spegnere le pendrives prima di disconnetterle... basta smontarle!
Il fatto è che lo script è nato per un altro uso (spegnere il maledetto mouse ottico con il suo faro!) ma può essere usato per qualsiasi periferica usb. Per quanto mi riguarda, a volte lo uso per spegnere gli hard-disks usb anche lasciandoli attaccati, evitando che il motore continui a girare... E poi mi sembra (scrivo sembra perchè una conferma al 100% non ce l'ho) che le periferiche usb che supportano la modalità "suspend" possano effettivamente spegnersi (o almeno porsi in una modalità a "basso consumo") prolungando l'autonomia di un portatile (e questo vale soprattutto per quelle periferiche che risultano connesse ad un bus usb ma che, di fatto, non possono essere fisicamente disconnesse, vedi la webcam dell'eeePc).
Concordo sull'impiego del tuo script! ![]()
Bravo e chiaro!
(+1 in arrivo!)
Vinboy
Non in linea
Grazie mille.
Ma non esiste niente già pronto nella distribuzione Ubuntu.
Non in linea
Che io sappia, in nessuna distro linux c'è la possibilità tramite interfaccia grafica o terminale di gestire direttamente (intendo con un comando semplice) il power level delle periferiche usb... se c'è, fatemi subito un fischio!!!
Grazie a tutti dell'apprezzamento!
Non in linea
Adesso che ne son state spiegate le funzioni, lo script si fa interessante. Dovrò provarlo.
Vero è, per quello che ricordo, che nemmeno su win si spengono.
Non in linea
DanyTheBat ha scritto:
Che io sappia, in nessuna distro linux c'è la possibilità tramite interfaccia grafica o terminale di gestire direttamente (intendo con un comando semplice) il power level delle periferiche usb... se c'è, fatemi subito un fischio!!!
Grazie a tutti dell'apprezzamento!
Intendevo qualcosa che mi permettesse di smontare la memoria/hdd USB, una funzione simile a quella che c'è in win.
Non in linea
Per quello mi è sempre bastato il click dx e "smonta" o, in alcuni casi "espelli". Non sempre compare l'osd, ma se guardi in computer vedrai che il disco/penna è stato smontato.
Non in linea
lanzen ha scritto:
Per quello mi è sempre bastato il click dx e "smonta" o, in alcuni casi "espelli". Non sempre compare l'osd, ma se guardi in computer vedrai che il disco/penna è stato smontato.
Oppure dalle icone che trovi fra le risorse in nautilus (il file manager per GNOME) basta cliccare sull'icona a "frecetta" corrispondente alla periferica e la monta/smonta, avvisando anche con un messaggio di notifica della possibilità di scollegare il dispositivo (se rimovibile).![]()
Non in linea
...oppure aggiungi l'applet Montadischi al pannello di Gnome così oltre alle pendrives ed agli hard-disks usb vedi anche le altre partizioni disponibili (quelle montate all'avvio però non possono essere smontate tramite l'applet perchè richiedono i privilegi di root)
Non in linea
DanyTheBat ha scritto:
...oppure aggiungi l'applet Montadischi al pannello di Gnome così oltre alle pendrives ed agli hard-disks usb vedi anche le altre partizioni disponibili (quelle montate all'avvio però non possono essere smontate tramite l'applet perchè richiedono i privilegi di root)
Mitico Dany!...se non ti avessi già dato un + pochi minuti fa... te lo darei ora! ![]()
(Adoro la completezza e la precisione!... sono fatto così!)![]()
Ultima modifica di vinboy (07-01-2009 14:50:13)
Non in linea
non credo che nei sistemi win le porte usb vengano disalimentate all' umount delle periferiche... la porta usb è HOT PLUG quindi si possono inserire e disinserire periferiche a PC acceso (quindi a porta alimentata) senza arrecare nessun danno alla periferica...
non confondiamo un VOLUME MONTATO con un DISPOSITIVO INSERITO...
nel primo ci sono scambi di dati, il sistema operativo riconosce il dispositivo come periferica con cui interagire...
nel secondo caso il sistema operativo può anche non riconoscere il dispositivo, anche se inserito e alimentato...
in definitiva andate tutti tranquilli nel togliere chiavette/ dichi e quant'altro... abbiate però l'accortezza di SMONTARE il volume prima... (io non lo faccio mai comunque ) ![]()
Non in linea
lanzen ha scritto:
Vero è, per quello che ricordo, che nemmeno su win si spengono.
Ricordi male ![]()
Certo, sono pippe mentali, ma ribadisco che se su windows viene disabilitata l'alimentazione un motivo c'è.. magari è una penna su 10 milioni che ne risente... ma ho sta fissa da troppo tempo e volevo trovare una soluzione... ho gia dato il +1 a Danythebat per l'ottimo script condiviso con tutti. Lo spirito open source è questo ![]()
Non in linea
Rieccomi qua!
Qui (http://www.lesswatts.org/projects/devic … nt/usb.php) parla della funzione autosuspend del bus USB nel kernel linux (che però in Ubuntu sembra essere disabilitata, nelle altre distro non so).
Qui (http://www.mjmwired.net/kernel/Document … gement.txt) e qui (http://www.mjmwired.net/kernel/Document … ersist.txt) invece parla di Power management e Device persistence del bus USB.
Proprio in "persist.txt" dice
when a USB bus is suspended the bus must continue to supply suspend current (around 1-5 mA)
che è un pò quello che pensiamo tutti (almeno spero): il bus USB non spegne totalmente le periferiche quando le poniamo in suspend, piuttosto comunica loro di spegnere le parti non essenziali alla comunicazione sul bus (e quindi ad essere correttamente gestite dal bus stesso), così da poter fornire loro correnti nell'ordine di 1-5 mA che a confronto dei 200 mA per una pendrive e dei 500-1000 mA per un HD da 2,5" è un bel risparmio. Tra l'altro, con la sola circuiteria di gestione del bus accesa, si può effetivamente dire che la pendrive (o l'HD) è effettivamente spenta, in quanto il controller che gestisce le operazioni di lettura-scrittura risulta disalimentato.
Spero di aver messo un pò più di carne al fuoco... e per chi non si fida, stavo meditando di misurare la corrente sul bus USB in stato on e suspended con una pinza amperometrica (ma ho bisogno di qualche minuto libero;) )
A presto
Non in linea
DanyTheBat ha scritto:
Rieccomi qua!
Qui (http://www.lesswatts.org/projects/devic … nt/usb.php) parla della funzione autosuspend del bus USB nel kernel linux (che però in Ubuntu sembra essere disabilitata, nelle altre distro non so).
Qui (http://www.mjmwired.net/kernel/Document … gement.txt) e qui (http://www.mjmwired.net/kernel/Document … ersist.txt) invece parla di Power management e Device persistence del bus USB.
Proprio in "persist.txt" dicewhen a USB bus is suspended the bus must continue to supply suspend current (around 1-5 mA)
che è un pò quello che pensiamo tutti (almeno spero): il bus USB non spegne totalmente le periferiche quando le poniamo in suspend, piuttosto comunica loro di spegnere le parti non essenziali alla comunicazione sul bus (e quindi ad essere correttamente gestite dal bus stesso), così da poter fornire loro correnti nell'ordine di 1-5 mA che a confronto dei 200 mA per una pendrive e dei 500-1000 mA per un HD da 2,5" è un bel risparmio. Tra l'altro, con la sola circuiteria di gestione del bus accesa, si può effetivamente dire che la pendrive (o l'HD) è effettivamente spenta, in quanto il controller che gestisce le operazioni di lettura-scrittura risulta disalimentato.
Spero di aver messo un pò più di carne al fuoco... e per chi non si fida, stavo meditando di misurare la corrente sul bus USB in stato on e suspended con una pinza amperometrica (ma ho bisogno di qualche minuto libero;) )
A presto
e di qualche filetto volante ![]()
![]()
![]()
Non in linea