Linux.embarque : Gestion d'une clé USB

Posté par undine () le 11 octobre 2006
0
Bonjour à tous,



J'ai une carte ARM9 et j'ai quelques difficultés a y connecter des clé USB.



J'ai d'abord activé les modules suivants dans le noyau : USB host, USB file system, OHCI_HCD, USB mass storage (en module), SCSI et la gestion des disk SCSI.

D'après les quelques tutoriaux que j'ai lu sur le net ces drivers sont suffisants.



Lorsque je lance la carte, tout à l'air de bien se passer : ma clé est bien détectée et plusieurs informations affichées lors de la connexion sont correctes, voici la trace :



usb 1-1: Product: Flash Disk

usb 1-1: Manufacturer: USB

usb 1-1: SerialNumber: 4403983FABC895D3

usb 1-1: configuration #1 chosen from 1 choice

scsi2 : SCSI emulation for USB Mass Storage devices

Vendor: OTi Model: Flash Disk Rev: 2.00

Type: Direct-Access ANSI SCSI revision: 02

SCSI device sda: 256000 512-byte hdwr sectors (131 MB)

sda: Write Protect is off

sda: assuming drive cache: write through

SCSI device sda: 256000 512-byte hdwr sectors (131 MB)

sda: Write Protect is off

sda: assuming drive cache: write through

sda:<7>usb-storage: queuecommand called

sda1

sd 2:0:0:0: Attached scsi removable disk sda





Le fichier /proc/bus/usb/devices contient toutes les informations liées à la clé :



T: Bus=01 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#= 8 Spd=12 MxCh= 0

D: Ver= 2.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs= 1

P: Vendor=0ea0 ProdID=2168 Rev= 2.00

S: Manufacturer=USB

S: Product=Flash Disk

S: SerialNumber=4403983FABC895D3

C:* #Ifs= 1 Cfg#= 1 Atr=80 MxPwr=200mA

I: If#= 0 Alt= 0 #EPs= 3 Cls=08(stor.) Sub=06 Prot=50 Driver=usb-storage

E: Ad=81(I) Atr=02(Bulk) MxPS= 64 Ivl=0ms

E: Ad=02(O) Atr=02(Bulk) MxPS= 64 Ivl=0ms

E: Ad=83(I) Atr=03(Int.) MxPS= 2 Ivl=1ms



Le fichier /proc/scsi/scsi semble se mettre à jour correctement :



Attached devices:

Host: scsi2 Channel: 00 Id: 00 Lun: 00

Vendor: OTi Model: Flash Disk Rev: 2.00

Type: Direct-Access ANSI SCSI revision: 02





Cependant la clé n'est pas montée automatiquement alors que mon fichier /etc/fstab contient bien la ligne : none /proc/bus/usb usbfs defaults 0 0



Lorsque j'essai de la monter à la main (je fais mount -t usbfs /proc/bus/usb /mnt/usb) j'obtient dans le répertoire /mnt/usb le contenu du répertoire /proc/bus/usb (fichier devices et répertoire 001 représentant le hub je crois) !



J'essai avec les répertoires /proc/bus/usb/001/001 et /proc/scsi/usb-storage/ : même résultat.

J'ai aussi essayé avec les fichiers /dev/sda et /dev/sda1 mais là encore même résultat.



Quelqu'un aurai-t-il une idée, une commande que j'aurai oublié ?



Merci d'avance.



PS : si vous voulez, je peut fournir la trace

> Lire le message (5 commentaires, moyenne: 1,6).  

Vous avez demandé le commentaire #763780.

De mon côté....

Posté par Gyro Gearllose () le 11/10/2006 à 13:36. (lien). Évalué à 2.

J'aurais plutôt mis ça dans mon fstab :
/dev/sda1 /mnt/usb auto defaults 0 0
Le problème, c'est que la clef ne sera peut-être pas toujours en /dev/sda1... Faut jeter un oeil du côté d'udev pour créer une règle spéciale qui crée un lien fixe en fonction du model, du n° de série de la clef ou tout autre identifiant permettant de distinguer de façon unique cette clef.
Quoi qu'il en soit, la trace du système donne le périphérique alloué à la clef. Si tu veux essayer, fais un essai avec :
$ mount /dev/sda1 /mnt/usb
Ca devrait rouler !

--
All articles which are excluded shall be deemed included
Tous les articles exclus sont considérés inclus
--Brian de Palma in Phantom of the Paradize

[ Répondre ]

  • [^]Re: De mon côté....

    Posté par undine () le 11/10/2006 à 16:21. (lien). Évalué à 1.

    Bon en fait j'ai fait une petite erreur, j'ai oublié de charger le module usb-storage :-)
    De toute façon j'avais essayé avant avec une configuration du noyau où le module était intégré et j'avais la même problème, seules les traces que j'ai fournies sont différentes).

    Grâce à vos propositions j'ai pu enfin lire ma clé !!!
    En fait, le mount -t vfat /dev/sda1 /mnt/usb ne fonctionne pas (pourquoi, là est tout le mystère...).
    En faisant un mount -t auto /dev/sda1 /mnt/usb j'ai aussi des messages d'erreurs mais cela fonctionne. Voici la trace :

    # mount -t auto /dev/sda1 /mnt/usb/
    VFS: Can't find ext3 filesystem on dev sda1.
    VFS: Can't find an ext2 filesystem on dev sda1.
    cramfs: wrong magic

    Bref, je vous remercie tous les deux pour vos réponse pertinentes et rapides.

    PS pour Da Bou : en fait j'ai utilisé la ligne "none /proc/bus/usb usbfs defaults 0 0" dans mon fstab car dans la doc de linux fournie avec les sources du noyau il est dit que pour le gestion des clé usb il faut utiliser cette ligne. Cependant j'avais mal compris, cette ligne sert, je pense, pour le noyau et non pour l'utilisateur. Elle lui permet de monter la clé de sorte à pouvoir extraire toutes les informations liées à la clé (nom, id du bus,...) via le fichiers devices.

    PS2 : j'aimerai bien savoir quel type de système fichiers j'ai sur la clé étant donné que le mount avec -t vfat ne fonctionne pas et je j'avais auparavant utilisé la clé avec Windows...

    [ Répondre ]

    • [^]Re: PS2

      Posté par Eric Streit () le 11/10/2006 à 17:33. (lien). Évalué à 1.

      essayez : mount -t msdos .....

      Eric!
      -----

      [ Répondre ]

      [^]Re: De mon côté....

      Posté par Gyro Gearllose () le 12/10/2006 à 07:09. (lien). Évalué à 2.

      La ligne du fstab est correcte, et je suis désolé si je me suis mal fait comprendre. Elle permet de monter le bus usb dans /proc/bus/usb de façon à ce que le kernel soit au courant de ce qui se passe sur le bus, effectivement.
      Mais on parle bien du bus dans ce cas, et non des périphériques eux-mêmes.
      Si tu veux vraiment savoir quel est le système de fichiers sur ta clef (probablement vfat ou fat32 ou fat16), tu peux, une fois ta clef branchée et avant de la monter effectuer un :
      $ fdisk -l
      en tant que root.
      Ca te listera toutes les partitions de tous tes disques, y compris ta clef...
      Autrement, si vfat ne fonctionne pas, c'est peut-être parce que ton kernel ne le supporte pas, ni en natif, ni sous forme de module.
      Voilà, en espérant que ces quelques lignes t'aideront.

      --
      All articles which are excluded shall be deemed included
      Tous les articles exclus sont considérés inclus
      --Brian de Palma in Phantom of the Paradize

      [ Répondre ]