Analyse et installation d'un lecteur de carte

Depuis que j'ai écrit l'article sur le réseau "over usb" pour le zaurus, j'ai régulièrement des questions sur l'installation de divers périphériques usb (sur les cartes SD aussi mais c'est une autre histoire)... Nous allons donc dans cet article prendre un exemple de plus de périphérique usb que nous allons tenter d'installer sur notre système adoré...

Introduction

La plupart des questions que je reçois concernent des lecteurs de cartes usb, des appareils usb ou des clefs usb. Si vous les utilisez sous windows, vous avez sans doute remarqué que la plupart d'entre eux apparaissent de la même façon, un lecteur amovible. Pour information rapide, sous windows, le pilote chargé de ce travail s'appelle usbstor.sys...

Celà vient du fait que la norme usb utilise des principes extrêmement pratiques. Le premier est que chaque périphérique s'auto-identifie par le biais d'un couple VID/PID, ce qui signifie, Vendor ID et Product ID, soient un identificateur de vendeur (fabricant) et de produit de ce fabricant. Le second est que chaque périphérique informe le système de son rôle via trois identifiants, la classe de périphérique, la sous classe et le protocole. Le numéro de la classe storage est 08. La subclass dépend du type de jeu de commandes utilisé pour communiquer avec le périphérique et varie de 1 à 6. Le numéro de protocole est soit 0, soit 1, soit 50 (en hexadécimal, soit 80). Ce dernier dépend de la façon dont les informations transitent entre le pc et le périphérique USB.

Les matériel et logiciel

Chez moi, je n'ai pas de périphérique correspondant à la classe stockage de masse (si quelqu'un veut m'offrir un appareil numérique compatible, merci de m'envoyer un mail ;-) ). J'ai donc essayé d'en récupérer un au boulot. Les clefs USB contenaient toutes des données importantes et me suis donc rabattu sur un lecteur de cartes Compact Flash de marque inconnue (voir photo).

J'ai récupéré une carte CF de 256MégaOctets qui me sert pour lire des ogg sur le Zaurus et maintenir sa ROM et ses paquets bluetooth à jour.

L'ordinateur est un portable Dell Inspiron 5100 avec une debian3.0 mise à niveau au fur et à mesure et un kernel 2.4.21 (je sais, ce n'est pas le dernier mais c'en est un avec des modifs, patch mh, module broadcom externe et petites modifs perso alors j'y tiens pour l'instant ...). J'ai installé le package linux-hotplug (apt-get install hotplug).

On branche

Le pc allumé, je vérifie que le lecteur ne contient pas de carte et je le branche sur un port usb libre du pc. On fait un petit su pour devenir root, on tape dmesg :

hub.c: new USB device 00:1d.0-1, assigned address 2
scsi1 : SCSI emulation for USB Mass Storage devices
usb-uhci.c: interrupt, status 2, frame# 72
  Vendor:           Model:                   Rev:
  Type:   Direct-Access                      ANSI SCSI revision: 02
Attached scsi removable disk sda at scsi1, channel 0, id 0, lun 0
sda : READ CAPACITY failed.
sda : status = 1, message = 00, host = 0, driver = 08
Info fld=0x0, Current sd00:00: sense key Not Ready
Additional sense indicates Medium not present
sda : block size assumed to be 512 bytes, disk size 1GB.
 sda: I/O error: dev 08:00, sector 0
 I/O error: dev 08:00, sector 0
 unable to read partition table
WARNING: USB Mass Storage data integrity not assured
USB Mass Storage device found at 2

Le périphérique est reconnu, l'article tombe par terre ... Il y a juste un détail troublant ... ce warning ... En effet, linux tente de lire le partitionnement du "disque" /dev/sda, puisqu'il s'agit visiblement d'une émulation scsi. Il ne trouve pas le partitionnement et d'ailleurs, ne trouve même pas le support (medium). Rappelez vous que nous n'avons pas mis de carte dedans ;-)

Le Médium

On met maintenant la carte, sans débrancher le lecteur...

Dans dmesg, rien de neuf :-(. On tente alors fdisk

ZazouMobile:/home/zazou# fdisk /dev/sda

Command (m for help): p

Disk /dev/sda: 16 heads, 32 sectors, 992 cylinders
Units = cylinders of 512 * 512 bytes

   Device Boot    Start       End    Blocks   Id  System
/dev/sda1   *         1       991    253680    6  FAT16

Là, d'accord, on retrouve nos 256Mo sur /dev/sda1 (on reconnait le partitionnement pour Zaurus.). Nous nous empressons de créer un répertoire de montage (mkdir /mnt/cf). Il ne nous reste plus qu'à monter le périphérique /dev/sda1 dans ce répertoire et zou ...

ZazouMobile:~# mount -t vfat /dev/sda1 /mnt/cf
ZazouMobile:~# cd /mnt/cf/
ZazouMobile:/mnt/cf# ls -l
total 2256
drwxr-xr-x    5 root     root         4096 Aug 27 15:08 Documents
drwxr-xr-x    2 root     root         4096 Dec 31  2002 QtPalmtop
-rwxr-xr-x    1 root     root       348015 Aug 22 09:07 bluez_2.4.18-mh8_arm.ipk
drwxr-xr-x    2 root     root         4096 Sep  8 16:14 openssh-3.2.3p1
-rwxr-xr-x    1 root     root      1859327 Jan  2  2003 openssh-3.2.3p1-arm-linux-1.tar.gz
-rwxr-xr-x    1 root     root        86433 Aug 22 09:07 vorbis-plugin_1[1].0.1-6_arm.ipk

On liste le contenu de la carte et pfff... C'est vraiment trop facile :-( Sûr que ça fera pas un bon article dans linuxmag, avec le public de geek qu'ils ont ;-)

@+

Xavier Garreau - <xavier@xgarreau.org>
http://www.xgarreau.org/

Ingénieur de recherche PRIM'TIME TECHNOLOGY
http://www.prim-time.fr/

Membre fondateur du ROCHELUG
http://www.rochelug.org/

Liens & Références :