Forum Linux.embarqué Gestion d'une clé USB

Posté par  .
Étiquettes : aucune
0
11
oct.
2006
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
  • # Tu te trompe ;)

    Posté par  (site web personnel) . Évalué à 2.

    Je pense que tu te trompe dans la commande a utiliser...

    Ce qui devrais marcher :
    mkdir -p /mnt/usb
    mount -t vfat /dev/sda1 /mnt/usb
    ls /mnt/usb

    En fait une clef est vue comme un disque scsi par le noyau linux, donc suffit de monter sa première partition souvent en vfat (fat32), mais tu peux reformater en ext3/xfs/jfs/... si ça te chante...
    (bon l'autre bouse de redmond supporte que le fat32 par contre)
  • # De mon côté....

    Posté par  . É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 !
    • [^] # Re: De mon côté....

      Posté par  . É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...
      • [^] # Re: PS2

        Posté par  . Évalué à 1.

        essayez : mount -t msdos .....

        Eric!
        -----
      • [^] # Re: De mon côté....

        Posté par  . É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.

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.