Post Meta
-
Indietro
-
Febbraio 19, 2007 -
Linux -
9 Comments
-
Letto 242 volte
-
Comments Feed -
Stampa questo Post
19th
FEB
Progetto USB Power Switch (ora si fà sul serio)
Posted by RedSend | Filed under Linux
Introduzione
L’idea alla base di questo progetto consiste nella realizzazione di un software scritto in linguaggio C (per ambienti GNU/Linux\index{GNU/Linux}) che permetta il controllo dell’alimentazione delle porte USB di un calcolatore: per controllo, nel nostro caso, intendiamo l’accensione o lo spegnimento dell’alimentazione delle porte.
Il contesto openSource (GNU/Linux) in cui viene sviluppata l’applicazione rende possibile il completo utilizzo di tutte le funzionalità di basso livello messe a disposizione dal sistema operativo, dunque, la nostra conoscenza di tale sistema e le ampie possibilità di interagire con esso (da parte di una applicazione software) sono stati i principali motivi per cui è stato scelto di operare in tale ambiente.
L’idea di gestire l’alimentazione delle porte USB è nata per un motivo ben preciso e legato all’utilizzo di dispositivi portatili per la riproduzione di file audio.
Alcuni dispositivi siffatti, quando vengono connessi ad un calcolatore (attraverso una porta USB) per il trasferimento di nuovi file sul dispositivo o la rimozione di altri già presenti al suo interno, utilizzano l’alimentazione offerta dalla porta USB (oltre al “canale” per il trasferimento dei dati) a cui sono connessi per poter caricare le loro batterie di alimentazione.
Una spiacevole situazione, per l’utente, potrebbe verificarsi nel momento in cui si è in possesso di un notebook, ma sprovvisti di alimentazione esterna, quindi si stà utilizzando la batteria interna al notebook.
In questa semplice e comune situazione, l’utente che connette il dispositivo al proprio notebook per il solo trasferimento di qualche file audio è costretto a dover alimentare il notebook esternamente per evitare che il dispositivo prelevi l’alimentazione della batteria interna al notebook una volta connesso e provochi l’esaurimento di quest’ultima.
La gestione dell’alimentazione, dunque, in questo caso si rivela estremamente utile ai fini di sospendere la sola alimentazione della porta USB a cui è connesso il dispositivo e, allo stesso tempo, consentire il trasferimento dati.
L’idea di base, inoltre, può essere applicata ad una vasta gamma di dispositivi che utilizzano le porte USB e per i quali si vuole sospendere l’alimentazione ed in un secondo momento ripristinarla senza dover rimuovere il dispositivo (sostanzialmente senza doverlo disconnettere dalla porta) e reinserirlo affinchè gli venga data di nuovo l’alimentazione.
In questo caso, come semplice esempio abbiamo pensato ad una lampada USB che, una volta connessa ad una porta, potrebbe essere accesa o spenta dall’utente mediante la nostra applicazione software, ponendo ad “ON” oppure “OFF” l’alimentazione della porta a cui è connessa mediante una opportuna combinazione di tasti oppure una piccola finestra di dialogo.
Nei successivi capitoli di questo documento parleremo, prima, delle principali caratteristiche della specifica USB e delle porte su cui lavorano i dispositivi ed i calcolatori, in particolar modo enfatizzeremo quelle parti che sono maggiormente legate allo sviluppo della nostra applicazione.
In seguito chiariremo alcuni aspetti fondamentali del framework USB all’interno del sistema GNU/Linux, definendo come tale sistema interagisce (attraverso la specifica USB) con i dispositivi e le varie porte del sistema.
Proseguiremo, poi, con una descrizione generale dell’architettura e del funzionamento della nostra applicazione, andando a delinearne (ad un alto livello di astrazione) i ruoli e le operazioni svolte da ciascun componente da noi creata, nonchè l’interazione che c’è tra queste diverse componenti.
Continua……..
Sorgenti e Documentazione si trovano nella sezione download. Il Software è in una fase embrionale, necessita di alcuni accorgimenti ed una dura fase di testing (che per mancanza di materiale non è stata ancora possibile effettuare).
Tags: Linux


potevi pure metterlo un link…non riesco a trovarlo. sono parole troppo generiche.un link sarebbe gradito.
Paolo ecco il link, ora lo aggiungo anche nel post…
http://www.redsend.org/downloads/?ls=Universita/Usb%20Power%20Switch
ho compilato il demone…ma non c’è output e come posso fare per costruire un client? Nel doc del progetto (escluso codice) non ci sono info
allora paolo per interagire con il demone basta fare un echo 0 e un echo 1 in un file come viene descritto nel paragrafo 4.3 del pdf (dai un ochiata anche alle costanti definite nel listing 4.2 e 4.7 per i path in cui trovare i file e gli interi corrispondenti ai comandi), quindi l’implementazione del client è veramente semplice… noi abbiamo fatto un esempio di client in php, che ora mi procuro e inserisco in download in cui potrai vedere l’estrema semplicità di implementazione essendo basato tutto su filesystem l’interazione con il demone risulta immediata e semplice semplice.
Fammi sapere se riesci ad utilizzarlo e se scrivi un client… io metto il nostro client php nella sezione download e te lo notifico appena lo metto, nel caso scrivi un client e ti và di distribuirlo puoi mandarmelo e lo metto nella sezione download insieme al nostro in php.
Ciao…
Trovato… l’ho inserito nella stessa sezione del demone sotto la voce client_php.tar.gz
Ora non ricordo se quella che ho è la versione funzionante al 100% perchè l’ho trovata nel mio public_html ma ricordo che durante la dimostrazione modificammo qualcosa… e non posso provarla ora perchè non ho un hub che supporti quella funzionalità… vedi un pò se ti funziona in tutti i casi puoi guardare il codice e vedere come abbiamo fatto… le modifiche che facemmo durante la presentazione non erano fondamentali…
fammi sapre
uso un echo 0 > /tmp/…/X dove X è la porta che voglio disconnettere, ma non succede nulla. Ho subito pensato che la causa possa essere che l’hub non supporta questa funzionalità,però in /tmp c’è la cartella, quindi un hub capable di questa funzionalità l’ha trovato, o sbaglio?
Si se compare vuol dire che supporta la funzionalità… mi puoi mandare tramite il form per contattarci l’output del comando “lsusb -v” che volgio controllare delle cose…
Un ultima cosa… sei root quando fai queste operazioni?
Scusate sto impazzendo da una settimana e non c’è verso di riuscire a compilare proprio niente (premetto la mia inesperienza in materia) ma anche seguendo le istruzioni del pdf non risolvo niente. Diversi errori e il piu frequente dice no such file or directory riferendosi al usbPowerSwitch.c
Qualcuno di voi che ha compilato il programma potrebbe mettere un bel link del prodotto bello e completo? o magari mandarmelo via e-mail??? vi preeeeegooooooo!!!!!!!
Ciao mimmo, io proprio in questo momento ho provato a compilarlo come viene indicato nel pdf ed tutto ha funzionato alla perfezione. Mandarti il file già compilato forse non risolve il tuo problema perchè potrebbe non trovare le librerie necessarie.
Quello che puoi fare e lanciare il comando
libusb-config –libs
e vedere se ti dà in output qualcosa del genere
-L/usr/lib -lusb
se così non fosse allora devi provvedere ad installare le librerie libusb-0.1.12 (la versione la controlli con il comando libusb-config –version)
Un altro problema che potresti avere è con le libreria pthread presenti nel pacchetto glibc, ma dubito che ti manchino nel sistema.
Per l’errore “no such file or directory” mi viene da pensare che non sei nella cartella giusta, ma spero non sia questa la causa, prova a verificare i permessi, il proprietario, non sò… è davvero strano come errore. Scrivi pure se non riesci a risolvere il problema.