# [USB flash-Pen] modulo usb_storage leeento!

## Bengio

Son tornato.

Probabilmente molti di voi avranno una chiavetta usb. Io ne ho una e da tempo uso l'emulazione scsi con il modulo scsi disk. L'altro giorno, mentre mi accingevo a compilare il kernel, scorgo una opzione 

```
Device Drivers ---> Block devices  ---> < > Low Performance USB Block driver
```

 e leggendo l'help  scopro che potrebbe fare al caso mio

```
Low Performance USB Block driver

CONFIG_BLK_DEV_UB:                                                                                        

This driver supports certain USB attached storage devices such as flash keys.

Warning: Enabling this cripples the usb-storage driver.If unsure, say N.

```

Traducendo: Attenzione: Abilitandolo azzopperete l'usb-storage driver. Che vuol dire?

Senza indugi l'ho provato e mi sono reso conto che per copiare un file da 40MB cistava circa 30min.

Siccome ho visto sul forum che molti lo usano, mi sono chiesto "Perchè usarlo se è così lento?"

Forse va così lento solo a me?

Salut,

Bengio

----------

## emix

Io non lo uso e sono felice così... Poco fa ho copiato 170MB in una 30ina di secondi  :Laughing: 

----------

## Tùrin_Mormegil

magari hai attaccato la chiavetta ad una porta usb 1.1 invece che una 2.0

----------

## Bengio

La mia chiavetta è usb 1.1 e con l emulazione scsi riempio i 128Mb in qualche minuto.

Allora è un problema mio?

Salut,

Bengio

----------

## fedeliallalinea

 *Bengio wrote:*   

> La mia chiavetta è usb 1.1 e con l emulazione scsi riempio i 128Mb in qualche minuto.

 

Usb 1.1 va a 12Mbit/sec quindi 1.5Mb/sec. Un breve calcolo 128/1.5=85sec=1.5minuti cioe' un minuto e mezzo. Mi sembra tutto normale.

----------

## mouser

Credo serva a chi ha un computer molto vecchio (e quindi molto lento) ed un controller pci USB2.0fs.

In quel caso credo che la capacita' di trasferimento del controller sia troppo maggiore a quella del pc, e quindi puo' servire rallentare il controller (in questo caso via software, con il driver) per evitare la corruzione dei file troppo grossi.

Almeno credo sia cosi', non ne sono sicuro

Ciriciao

mouser  :Wink: 

----------

## thoeni

Questo topic mi è stato di enooorme aiuto!

Qualcuno si ricorderà che fino a poco fa avevo lo stesso problema di Bengio (https://forums.gentoo.org/viewtopic.php?t=282562) ovvero lentezza assurda con HDD esterno.. non era una chiavetta, ma il problema era lo stesso... ho controllato di tutto, ma non riuscivo proprio a risolvere... leggendo quanto scritto qui sopra, mi è venuto in mente di controllare e... anche io avevo "Low Performance USB Block Driver", messo some modulo nel kernel! Inizialmente ho pensato che visto che era solo modulo e non lo caricavo io, non fosse quello il problema,invece... era proprio quello!!! Adesso il mio hdd USB2 va che è una scheggia!

Quando lo collego l'output di dmesg è il seguente (vi sembra normale?):

```

usb 1-4: new high speed USB device using ehci_hcd and address 5

usb 1-4: device descriptor read/64, error -71

usb-storage: USB Mass Storage device detected

usb-storage: -- associate_dev

usb-storage: Vendor: 0x059f, Product: 0x0351, Revision: 0x0000

usb-storage: Interface Subclass: 0x06, Protocol: 0x50

usb-storage: Vendor: LaCie,  Product: LaCie Hard Drive USB

usb-storage: Transport: Bulk

usb-storage: Protocol: Transparent SCSI

usb-storage: usb_stor_control_msg: rq=fe rqtype=a1 value=0000 index=00 len=1

usb-storage: GetMaxLUN command result is 1, data is 0

scsi2 : SCSI emulation for USB Mass Storage devices

usb-storage: *** thread sleeping.

usb-storage: device found at 5

usb-storage: waiting for device to settle before scanning

usb-storage: queuecommand called

usb-storage: *** thread awakened.

usb-storage: Command INQUIRY (6 bytes)

usb-storage:  12 00 00 00 24 00

usb-storage: Bulk Command S 0x43425355 T 0x185d L 36 F 128 Trg 0 LUN 0 CL 6

[...] -> le prossime 26 righe sono ripetute per cinque volte

usb-storage: usb_stor_bulk_transfer_buf: xfer 31 bytes

usb-storage: Status code 0; transferred 31/31

usb-storage: -- transfer complete

usb-storage: Bulk command transfer result=0

usb-storage: usb_stor_bulk_transfer_buf: xfer 8 bytes

usb-storage: Status code 0; transferred 8/8

usb-storage: -- transfer complete

usb-storage: Bulk data transfer result 0x0

usb-storage: Attempting to get CSW...

usb-storage: usb_stor_bulk_transfer_buf: xfer 13 bytes

usb-storage: Status code 0; transferred 13/13

usb-storage: -- transfer complete

usb-storage: Bulk status result = 0

usb-storage: Bulk Status S 0x53425355 T 0x1862 R 0 Stat 0x0

usb-storage: scsi cmd done, result=0x0

usb-storage: *** thread sleeping.

SCSI device sdc: 390721968 512-byte hdwr sectors (200050 MB)

sdc: assuming drive cache: write through

 /dev/scsi/host2/bus0/target0/lun0:<7>usb-storage: queuecommand called

usb-storage: *** thread awakened.

usb-storage: Command READ_10 (10 bytes)

usb-storage:  28 00 00 00 00 00 00 00 08 00

usb-storage: Bulk Command S 0x43425355 T 0x1863 L 4096 F 128 Trg 0 LUN 0 CL 10

usb-storage: usb_stor_bulk_transfer_buf: xfer 31 bytes

usb-storage: Status code 0; transferred 31/31

usb-storage: -- transfer complete

usb-storage: Bulk command transfer result=0

usb-storage: usb_stor_bulk_transfer_sglist: xfer 4096 bytes, 1 entries

usb-storage: Status code 0; transferred 4096/4096

usb-storage: -- transfer complete

usb-storage: Bulk data transfer result 0x0

usb-storage: Attempting to get CSW...

usb-storage: usb_stor_bulk_transfer_buf: xfer 13 bytes

usb-storage: Status code 0; transferred 13/13

usb-storage: -- transfer complete

usb-storage: Bulk status result = 0

usb-storage: Bulk Status S 0x53425355 T 0x1863 R 0 Stat 0x0

usb-storage: scsi cmd done, result=0x0

usb-storage: *** thread sleeping.

 p1

Attached scsi disk sdc at scsi2, channel 0, id 0, lun 0

Attached scsi generic sg2 at scsi2, channel 0, id 0, lun 0,  type 0

usb-storage: queuecommand called

[...] -> molte righe simili a quelle di seguito ;)

usb-storage: *** thread sleeping.

usb-storage: queuecommand called

usb-storage: *** thread awakened.

usb-storage: Bad target number (7:0)

usb-storage: scsi cmd done, result=0x40000

usb-storage: *** thread sleeping.

usb-storage: device scan complete
```

A me sembra un po' esagerato, ma l'hdd funziona alla grande! secondo voi è a posto? Cmq nel mio caso confermo che quel modulo aveva "azzoppato" la mia periferica...

Grazie mille a tutti!

..ah, unico problema (che prima nn si verificava) e che al momento dello "starting local" mi dà un errore ripetuto una decina di volte sun un hid not found... sapete di che si tratta? Lo dice in seguito ala rimozione di quel modulo...

----------

## mouser

Una cosa sola: capisco che e' di aiuto alla risoluzione dei problemi, ma (e credo che anche altre persone la pensino come me), nel limite del possibile, evitiamo le sezioni [b]code[/code] troppo _verbose_.

Non e' una critica, thoeni, ma IMHO credo abbassi di brutto la leggibilita' di un 3d.

Ottimo comunque il fatto che dimostri che, quando si apre un 3d, bisogna comunque continuare a cercare.

Ciriciao

mouser  :Wink: 

----------

## comio

 *thoeni wrote:*   

> 
> 
> ```
> 
> snip...
> ...

 

prova a vedere se hai impostato queste opzioni:

```

[X]   Verbose SCSI error reporting (kernel size +=12K)                                            

[X]   SCSI logging facility                                                                       
```

eventualmente deselezionale.

ciao

----------

## thoeni

...no, nessuna delle due voci è abilitata... sono tutte e due deselezionate... altr idee? dite che si tratta di un "log" un po' troppo dettagliato?

----------

## Bengio

 *fedeliallalinea wrote:*   

> Usb 1.1 va a 12Mbit/sec quindi 1.5Mb/sec. Un breve calcolo 128/1.5=85sec=1.5minuti cioe' un minuto e mezzo. Mi sembra tutto normale.

 

Non mi lamentavo della velocità con l'emulazione scsi, ma di quella con il modulo Device Drivers ---> Block devices  ---> < > Low Performance USB Block driver che mi fa caricare 50MB in circa 30 minuti.

La cosa che mi stranizza è che molti lo usano nonostante sia lento da morire, e quindi mi ero domandato se era un problema solo mio.

Salut,

Bengio

----------

## mouser

 *thoeni wrote:*   

> ...no, nessuna delle due voci è abilitata... sono tutte e due deselezionate... altr idee? dite che si tratta di un "log" un po' troppo dettagliato?

 

No, non volevo dire che il log e' troppo dettagliato. L'unica cosa (e la capisco perfettamente quando si misconosce un problema) si posta il log "verboso", poi, quando si inizia a capire il problema, e si capisce quali linee del log si riferiscono al problema in questione, un edit, 1/2 minuto e si migliora la leggibilita'.

mouser  :Wink: 

----------

## Cazzantonio

un vantaggio di tale driver è che gli usb-storage vengono visti come ubx e non più come sdx dal kernel....

chi di voi ha un hd scsi o sata e una chiavetta usb?

io trovo seccante che la chiavetta usb venga vista come un dispositivo simile ad un mio disco fisso.... a volte mi è capitato che la chiavetta, inserita nel pc prima dell'avvio, venisse vista prima dal kernel rispetto all'hd e che tale chiavetta venisse chiamata sda (e sdb l'hd) con ovvia impossibilità di montare la partizione di root presente su tale disco (visto che fstab puntava a sda...)

mi chiedo se l'utilizzo di tale modulo porti altri problemi oltre a qualche rallentamento della velocità della chiavetta... altrimenti sono fortemente tentato di metterlo comunque....

----------

## thoeni

cazzantonio, io ho due hdd sata (sda ed sdb)... in effetti con quel modulo l'hdd esterno USB veniva riconosciuto come /dev/ub/a/part1... per darti un'idea "in cifre" del rallentamento... con quel modulo ho trasferito u file di 700MB in 11.57 minuti (misurati con l'opzione "time")... senza quel modulo ho trasferito 12,5GB in 8.56 minuti... quindi credo proprio che mi terrò il mio bell'hdd esterno visto come sdc  :Wink: 

mi scuso x il "code" verboso... nn sembrava così lungo quando ho copiato! Prossima volta faccio prima l'anteprima  :Wink: 

Ah, adesso dopo starting local leggo ripetute alcune volte, le seguenti tre righe:

```
FATAL: Module hid not found.

FATAL: Module printer not found.

FATAL: Module mouse not found.
```

Questo lo scrive _SOLO_ da quando ho tolto quel modulo... prima assolutamente no... ho, ovviamente, uno mouse usb, una stampante usb e (credo hid sia quello...) un gruppo di continuità che si interfaccia al pc via USB... Any idea?

----------

## mouser

Ma se rallenta cosi' tanto, non basta non metterlo ed utilizzare udev ben configurato???

Mi sembra stupido andare a comprare una chiavetta USB2.0fs e poi impiegare 30 min per copiare qualche MB.

A questo punto me la compri USB1.0 e spendo la meta'

mouser  :Wink: 

[edit]

 *Quote:*   

> 
> 
> ... una stampante usb e (credo hid sia quello...) ...
> 
> 

 

Solo per conoscenza. hid e' l'acronimo di Human Interface Driver e serve per utilizzare mouse/tastiere/ecc. usb.

----------

## thoeni

infatti l'ho tolto... e non ho intenzione di rimetterlo... x una chiavetta usb da 128MB ci starei anche, ma con 200GB di hdd esterno la USB2 mi serve troppo!!! udev? ...uhm, mi sento un po' una cacca, ma non so cosa sia... adesso googlo un po'  :Wink: 

Ho accorciato il bbcode... se avete capito il problema posso anche toglierlo... o ridurlo ulteriormente...  :Rolling Eyes: 

----------

## gutter

 *thoeni wrote:*   

> 
> 
> Ho accorciato il bbcode... se avete capito il problema posso anche toglierlo... o ridurlo ulteriormente... 

 

No va bene così.

----------

## mouser

 *thoeni wrote:*   

> Ho accorciato il bbcode... se avete capito il problema posso anche toglierlo... o ridurlo ulteriormente... 

 

no, cosi' e' perfetto  :Wink: 

----------

## Cazzantonio

 *mouser wrote:*   

> Ma se rallenta cosi' tanto, non basta non metterlo ed utilizzare udev ben configurato???

 

Diciamo che la mia è un ipotesi visto che non uso la chiavetta usb che raramente

Per quanto riguarda udev invece non so se potrebbe funzionare... il kernel in fondo lo vedrà sempre come sda (e l'hd sdb) nei casi critici. Inotre mi sa che udev parte un po' dopo che il kernel ha trovato i dispositivi....

Bisognerebbe che scrivessi le regole anche per l'hd...

P.S.

magari costassero la metà... spesso la differenza sono pochi euro   :Wink: 

----------

## cloc3

 *Cazzantonio wrote:*   

> 
> 
> mi chiedo se l'utilizzo di tale modulo porti altri problemi oltre a qualche rallentamento della velocità della chiavetta... altrimenti sono fortemente tentato di metterlo comunque....

 

Io sto usando da tempo il driver ub, con qualche soddisfazione per vedere i miei dispositivi montati su /devub*.

Del fatto che la fotocamera fosse un po' lenta, davo (nubbio che sono) la colpa all'usb - evidentemente 1.1 (falso).

Poi, grazie a questo post, e a  quest'altro, con un intervento preciso di Fonderia-Digitale, mi è entrata la pulce nell'orecchio. Così ho collegato il mio Lacie via usb (di solito uso firewire).

Questi i risultati:

Driver ub:

```

gentoo-amd ~ # dmesg

...

usb 4-2: new high speed USB device using ehci_hcd and address 6

ub: sizeof ub_scsi_cmd 64 ub_dev 2472

uba: device 2 capacity nsec 250880 bsize 512

uba: device 2 capacity nsec 250880 bsize 512

 uba: uba1

ubb: device 6 capacity nsec 78140160 bsize 512

ubb: device 6 capacity nsec 78140160 bsize 512

 ubb: [mac] ubb1 ubb2 ubb3 ubb4 ubb5 ubb6 ubb7

usbcore: registered new driver ub

```

Driver usb-storage:

```

gentoo-amd ~ # dmesg

...

usb-storage: device found at 5

usb-storage: waiting for device to settle before scanning

  Vendor: TOSHIBA   Model: MK4018GAS         Rev: Q1.0

  Type:   Direct-Access                      ANSI SCSI revision: 00

usb-storage: device scan complete

SCSI device sda: 78140160 512-byte hdwr sectors (40008 MB)

sda: assuming drive cache: write through

SCSI device sda: 78140160 512-byte hdwr sectors (40008 MB)

sda: assuming drive cache: write through

 sda: [mac] sda1 sda2 sda3 sda4 sda5 sda6 sda7 sda8 sda9 sda10 sda11 sda12 sda13

Attached scsi disk sda at scsi2, channel 0, id 0, lun 0

```

In pratica, scegliendo il driver giusto, puoi guadagnare 6 partizioni!

Come spiega Fonderia, il driver ub ha bisogno ancora di una sistematina.

----------

## nglrossi

 *Cazzantonio wrote:*   

> un vantaggio di tale driver è che gli usb-storage vengono visti come ubx e non più come sdx dal kernel....
> 
> chi di voi ha un hd scsi o sata e una chiavetta usb?
> 
> io trovo seccante che la chiavetta usb venga vista come un dispositivo simile ad un mio disco fisso.... a volte mi è capitato che la chiavetta, inserita nel pc prima dell'avvio, venisse vista prima dal kernel rispetto all'hd e che tale chiavetta venisse chiamata sda (e sdb l'hd) con ovvia impossibilità di montare la partizione di root presente su tale disco (visto che fstab puntava a sda...)
> ...

 

Dovresti risolvere facilmente il problema dando delle label alle partizioni 

```
tune2fs -L <device> 
```

oppure

```
e2label <device>
```

con ext2-ext3

e poi montando le partizioni stesse con la label e non con l'identificativo di device che con hd estraibili, chiavette, box esterni, ipod, cellulari, lettori sd, macchine fotografiche puo' cambiare a seconda dell'ordine in cui vengono "pluggate"

da man fstab:

```

Instead  of  giving the device explicitly, one may indicate the (ext2 or xfs) filesystem that is to be mounted by its UUID or volume label (cf.  e2label(8) or xfs_admin(8)), writing LABEL=<label> or UUID=<uuid>, e.g., `LABEL=Boot'  or  `UUID=3e6be9de--8139-11d1-9106-a43f08d823a6'.  This will make the system more robust: adding or removing a SCSI disk changes the disk device name but not the filesystem volume label.

```

----------

## thoeni

...uhm, molto interessante, nn lo sapevo!

Da quel che ho capito però io nn posso utilizzarlo in quanto il mo hdd esterno è FAT32... quando lo riformatterò userò questa funzione di LABEL  :Wink: 

----------

## randomaze

 *thoeni wrote:*   

> Da quel che ho capito però io nn posso utilizzarlo in quanto il mo hdd esterno è FAT32... quando lo riformatterò userò questa funzione di LABEL 

 

Puoi anche usare udev per riconoscere il disco e fagli creare un link simbolico ben preciso....

----------

## Cazzantonio

 *nglrossi wrote:*   

> Dovresti risolvere facilmente il problema dando delle label alle partizioni 
> 
> 

 

Interessante! Non lo sapevo (del resto è tanto che non uso partizioni ext2/3)

Purtroppo uso reiserfs.... funziona anche con il reiser?

Mi faceva comunque piacere l'idea di ordinare seriamente le partizioni... non mi va di non sapere con certezza (senza bisogno di leggere la label ogni volta) quale device è assegnato all'hd su cui ho la root.... 

La soluzione di udev è sicuramente più elegante, tuttavia preferisco per ora continuare ad usare il vecchio driver sata deprecato (che vede i sata come degli eide, quindi hdx) ed evitare conflitti di nomenclature con i device usb.

Tanto immagino che nel prossimo futuro queste nomenclature cambieranno, per ora sto a vedere

----------

