venerdì 23 settembre 2011

USB Flash Disk - Mount problem solved ;) [0011:7788]


Mi è stata regalata questa bellissima chiavetta USB da 2GB a forma di Android. Purtroppo il mio sistema Linux non è in grado di montarla. Molto strano, anche perché non mi è mai capitato di avere problemi con le chiavette flash.
Su un sistema Windows 7 la chiavetta viene riconosciuta come una generic flash disk da 2GB (la prima volta che viene montata segnala un errore incomprensibile, ma dalla seconda volta in poi non si lamenta più).
Approfondisco la ricerca e cerco di capire con che tipo di chiavetta mi trovo a combattere. Con il comando lsusb ho visto che il device viene identificato come 0011:7788. Cercando su google non ho trovato da nessuna parte il vendor 0011.
Con il comando dmsg controllo che cosa dice il kernel:
[   93.572705] usb 2-1.2: new high speed USB device using ehci_hcd and address 5
[   94.031439] usbcore: registered new interface driver uas
[   94.090164] Initializing USB Mass Storage driver...
[   94.090337] scsi6 : usb-storage 2-1.2:1.0
[   94.090520] usbcore: registered new interface driver usb-storage
[   94.090524] USB Mass Storage support registered.
[   95.084135] scsi 6:0:0:0: Direct-Access     Generic  Flash Disk       8.00 PQ: 0 ANSI: 2
[   95.085315] sd 6:0:0:0: Attached scsi generic sg2 type 0
[   95.088454] sd 6:0:0:0: [sdb] 4116480 512-byte logical blocks: (2.10 GB/1.96 GiB)
[   95.089036] sd 6:0:0:0: [sdb] Write Protect is off
[   95.089042] sd 6:0:0:0: [sdb] Mode Sense: 03 00 00 00
[   95.089045] sd 6:0:0:0: [sdb] Assuming drive cache: write through
[   95.091665] sd 6:0:0:0: [sdb] Assuming drive cache: write through
[   95.217642]  sdb: sdb1
[   95.219446] sd 6:0:0:0: [sdb] Assuming drive cache: write through
[   95.219449] sd 6:0:0:0: [sdb] Attached SCSI removable disk
Pare tutto in ordine, ma dopo qualche secondo compare anche questo messaggio:
[  126.197842] usb 2-1.2: reset high speed USB device using ehci_hcd and address 5
Controllando meglio i messaggi del dmsg noto che la chiavetta viene riconosciuta con una capacità di 2.10GB ... molto strano, solitamente i dischi sono esattamente 2GB.

Alla fine è arrivata la soluzione (anche grazie a questo post). Il problema sta proprio nella definizione della capacità della chiavetta. Ho trovato due tools che girano su windows che ti permettono di identificare i dettagli della chiavetta e resettare le impostazioni della capacità.
Per capire il tipo di chip, ho utilizzato il programma ChipGenius. Il quale ha restituito queste informazioni:
Device Name: +[F:]+Periferica di archiviazione di massa USB(Generic Flash Disk USB Device)
PnP Device ID: VID = 0011 PID = 7788
Serial Number: 09086DF5
Revision: 8.00

Device Type: Standard USB device - USB2.0 High-Speed

Chip Vendor: Alcor
Chip Part-Number: FC8308

Product Vendor: (N/A)
Product Model: U

Tools on Web:  http://bbs.mydigit.cn/read.php?tid=148892
ccc
Bene, ora sappiamo che il chip è un FC8308.
Ora non rimane che trovare il programma che risolve il problema per i chip FC8308.
Seguendo le indicazioni riportate da ChipGenius sono finito su un sito cinese dove ho trovato il tool che mi serviva. Il tool si chiama FC_MpTool_FC8308_FC8508_FC8406 e la schermata che si presenta dopo aver lanciato l'eseguibil FC MpTool.exe è simile a questa:

Una volta inserita la chiavetta è possibile eseguire lo "Start" che consiste nel cancellare e riformattare la chiavetta impostando in modo corretto anche i paremetri come il vendor e la capacità.
Dopo questa operazione la chiavetta sul mio sistema Linux magicamente ha iniziato a funzionare. Ora il comando lsusb vede questo device:
Bus 002 Device 019: ID 058f:6387 Alcor Micro Corp. Transcend JetFlash Flash Drive
Mentre i messaggi del kernel sono questi:
[13174.766857] usb 2-1.2: new high speed USB device using ehci_hcd and address 21
[13174.965700] scsi20 : usb-storage 2-1.2:1.0
[13175.958454] scsi 20:0:0:0: Direct-Access     Generic  Flash Disk       8.00 PQ: 0 ANSI: 2
[13175.959960] sd 20:0:0:0: Attached scsi generic sg2 type 0
[13175.961518] sd 20:0:0:0: [sdb] 3850240 512-byte logical blocks: (1.97 GB/1.83 GiB)
[13175.962125] sd 20:0:0:0: [sdb] Write Protect is off
[13175.962136] sd 20:0:0:0: [sdb] Mode Sense: 03 00 00 00
[13175.962143] sd 20:0:0:0: [sdb] Assuming drive cache: write through
[13175.964609] sd 20:0:0:0: [sdb] Assuming drive cache: write through
[13176.334922]  sdb:
[13176.336625] sd 20:0:0:0: [sdb] Assuming drive cache: write through
[13176.336634] sd 20:0:0:0: [sdb] Attached SCSI removable disk
Come si può vedere ora la dimensione rilevata è 1.97GB.