fotocamera con usb-storage e dynusb

9 risposte [Ultimo contenuto]
Ritratto di Antonio
Antonio
(Geek)
Offline
Geek
Iscritto: 13/09/2004
Messaggi: 162

Come detto in un precedente post ho appena compilato il kernel 2.6.8 con i moduli usb-storage e i vari scsi e stavo cercando di montare la fotocamera come una memoria di massa. Usando libgphoto2 e hotplug la fotocamera funziona perfettamente, ma, anche allo scopo di testare dynusb, volevo provare se potevo vederla come una memoria qualsiasi.

Adesso le domande: qual'è la procedura da seguire per montare le memorie usb? Ho provato a montare /dev/sda* ma mount -t auto mi da errore perchè non riconosce il fs. Ed io gli do ragione: chissà quale fs viene usato dalla mia fotocamera canon a70!

E qui mi sorge la seconda domanda: sarà possibile vedere la mia fotocamera come una memoria usb? Se si, dovrebbe essere usb-storage in grado di leggere la memoria della fotocamera, oppure magari sono supportate in tal modo solo le fotocamere presenti nel kernel?

PS Provando ad usare dynusb non accade nulla (tra l'altro ho visto che per ora l'unico fs è il vfat e non credo vada bene per me) tranne il log:
usb.agent[3321]: dynusb: loaded successfully

PS2 per maxer: Probabilmete l'avrai visto ma lo posto lo stesso
questo link, se scorri fino alla nota finale si parla di un bug di hotplug nella procedura di remove, mi sembrava che avessi delle questioni in proposito.

Ciao

Ritratto di Antonio
Antonio
(Geek)
Offline
Geek
Iscritto: 13/09/2004
Messaggi: 162

Capisco, mi tocca ricompilare con il support vfat... lo stò facendo Wink

Per quanto riguradanil test che mi proponevi su /dev/sda*, restituiscono tutti zero da sda1 a sda10, ma a prescindere dal fatto che la fotocamera sia inserita o meno, non mi sembra abbia molto senso Thinking

Ultima cosa, per la determinazione dell'utente che usa X, quella linea che ti ho dato non funziona se l'utente non ha terminali aperti! Penso che per andare alla radice la cosa più sicura sia qualcosa del tipo:

lsof | grep '/X11R6/lib/' | sed -n '1p' | awk '{ print $3 }'

In ogni caso un utente non root deve pur sempre usare le librerie dell'X Wink. Solita storia: se ci sono più utenti sceglie il primo che capita.

Ritratto di Antonio
Antonio
(Geek)
Offline
Geek
Iscritto: 13/09/2004
Messaggi: 162

Volevo dire che se l'utente che usa X non usa gdm e non ha nessun xterm aperto (come quello nel quale digiti who Laughing) col primo modo (che hai inserito in dynusb) non lo vedi! In quest'ultimo modo che ti ho postato si, lo so che è brutale ma funziona. Per ottimizzazzioni si potrebbesempre usare una perline Big Grin

Ora torniamo alla fotocamera che voglio usare come un hard disk :-P. Si udev l'ho installato per l'occasione ma non l'ho mai usato, per caso bisogna evocarlo durante le notti di luna piena? Credo sia proptio udev o il problema dato che all'avvio del servizio mi da un bel:

FATAL: udev is already active on /dev/

ma non credo sia già in uso...

Ciao

Ritratto di Antonio
Antonio
(Geek)
Offline
Geek
Iscritto: 13/09/2004
Messaggi: 162

Il demone è un esecuzione, ma quando viene avviato (si, anche al boot) mi da quell'errore. Farò qualche ricerca...

Ritratto di Antonio
Antonio
(Geek)
Offline
Geek
Iscritto: 13/09/2004
Messaggi: 162

Faccio il punto della situazione.

Installo udev e lo lancio subito in esecuzione con /etc/init.d/udev start: errore blu! Al riavvio ottengo sempre il messaggio:

FATAL: udev is already active on /dev/

anche se il sistema parte e udev non funziona. Trovo un bug che segnala quasto problema e lo risolvo in questo modo:

al boot passo al kernel init=/bin/sh
mount -o remount,rw /dev/hda3 /
rm -f /dev/.udev.tdb
mount -o remount,ro /dev/hda3 /
reboot

A questo punto udev funziona (almeno penso), ma... inserendo la fotocamera non nasce nessun dispositivo scsi /dev/sda* (udev ne dovrebbe creare uno al volo vero? O ha un'altro non nome). Creato il dispositivo lo dovrei poter montare con un semplice mount giusto?

Ho provato dynusb 0.1.1, ma non funziona per almeno un'altro motivo. Attivando il debug ho scoperto che alla mia fotocamera viene assegnata un INTERFACE=6/1/1 mentre in /etc/hotplug/usb/dynusb si presuppone che sia 8/6/80. Anche sostituendo 6/1/1 nello script, non viene neanche eseguito il ciclo for successivo perchè a quanto pare /var/run/dynusb/arch è vuota.

Posto il log per ulteriori info:

Oct 17 15:59:43 localhost kernel: usb 1-2: new full speed USB device using address 2
Oct 17 15:59:43 localhost default.hotplug[3365]: arguments (usb) env (OLDPWD=/ DEVPATH=/devices/pci0000:00/0000:00:07.2/usb1/1-2 PATH=/bin:/sbin:/usr/sbin:/usr/bin ACTION=add PWD=/etc/hotplug HOME=/ SHLVL=2 DEBUG=yes SEQNUM=239 _=/usr/bin/env)
Oct 17 15:59:43 localhost default.hotplug[3365]: invoke /etc/hotplug/usb.agent ()
Oct 17 15:59:43 localhost default.hotplug[3379]: arguments (usb) env (OLDPWD=/ DEVPATH=/devices/pci0000:00/0000:00:07.2/usb1/1-2/1-2:1.0 PATH=/bin:/sbin:/usr/sbin:/usr/bin ACTION=add PWD=/etc/hotplug HOME=/ SHLVL=2 DEVICE=/proc/bus/usb/001/002 INTERFACE=6/1/1 PRODUCT=4a9/3073/1 TYPE=0/0/0 DEBUG=yes SEQNUM=240 _=/usr/bin/env)
Oct 17 15:59:43 localhost default.hotplug[3379]: invoke /etc/hotplug/usb.agent ()
Oct 17 15:59:43 localhost usb.agent[3379]: Setup dynusb for USB product 4a9/3073/1
Oct 17 15:59:43 localhost usb.agent[3379]: dynusb: loaded successfully
Oct 17 15:59:43 localhost usb.agent[3379]: Module setup dynusb for USB product 4a9/3073/1
Oct 17 15:59:43 localhost dynusb.debug: /etc/hotplug/usb/dynusb INTERFACE is not 8/6/80

La parola a maxer Big Grin

Ciao