Afin de communiquer avec une clé USB, il faut que l’ordinateur ou plus globalement l’appareil adopte un langage que la clé comprenne. Ce langage permet, en plus d’assurer la communication entre les deux appareils, de réaliser une gestion de données efficace.
Les commandes SCSI sont les commandes les plus utilisées de nos jours pour converser de façon optimale avec un périphérique, dont une clé USB. Ainsi, l’hôte (l’ordinateur ou l’appareil quelconque) peut envoyer des requêtes à ce dernier et optimiser cet envoi.
Qu’est-ce que le SCSI dans une clé USB ?
Avant de découvrir les commandes SCSI, il est important de d’abord connaître ce qu’est le SCSI.
Le SCSI, ou Small Computer System Interface est un ensemble de standards définissant la connexion, l’échange et la gestion des données entre un ordinateur et un périphérique. À noter qu’une clé USB sur laquelle vous pouvez transférer vos anciennes vidéo VHS est considérée comme étant un périphérique.
La première version de cette norme a été développée en 1979 et améliorée pour être publiée en 1981. La deuxième version est sortie en 1994 sous le nom de SCSI-2. Aujourd’hui, nous en sommes à la cinquième version.
Le SCSI définit entre autres les commandes, les interfaces ainsi que les protocoles permettant d’assurer la connectivité entre l’hôte et le périphérique. De cette manière, quels que soient le modèle et la marque de ce dernier, on pourrait toujours garantir que celui-ci soit reconnu par l’hôte.
Initialement, le SCSI était implémenté sur un bus parallèle. Actuellement, on tend de plus en plus vers l’utilisation de la communication série, d’où l’apparition des versions physiques récentes du SCSI telles que :
- Le SAS ou Serial Attached SCSI ;
- Le FCP ou Fibre Channel Protocol ;
- Le iSCSI ou Internet SCSI ;
- Et le UAS ou USB Attached SCSI.
Qu’est-ce qu’une commande SCSI et comment fonctionne-t-elle ?
Les commandes SCSI, d’après ce que l’on vient de voir, font donc partie de la norme SCSI. Il s’agit, pour faire simple, d’un standard d’écriture de requête permettant d’interagir avec n’importe quel périphérique, dont une clé USB.
Elles fournissent ainsi un cadre permettant de reconnaître un périphérique à travers les informations qu’il fournit et de lui envoyer des requêtes d’écriture ou de lecture. Autrement dit, elles offrent le moyen de contrôler le périphérique, que ce soit au niveau de son fonctionnement qu’au niveau des actions qu’il doit effectuer. Par exemple, elles peuvent aider à récupérer des fichiers endommagés situés dans une clé USB.
Les commandes SCSI sont envoyées au travers d’un protocole SCSI, dans un bloc CDB. Le CDB ou Command Descriptor Block est un code d’opération comprenant un octet de base suivi d’une série de plusieurs octets dans lesquels on retrouve les paramètres spécifiques d’une commande donnée. Une fois le CDB reçu et traité par l’appareil, ce dernier envoie un octet de code d’état ainsi que d’autres informations.
Quelques exemples de commandes SCSI dans les clés USB
Les commandes SCSI sont régies par des normes formulées par le comité T10 du Comité international des normes des technologies d’informations ou INCITS. Les exemples de commandes SCSI que nous allons voir aujourd’hui sont donc issus des normes qu’ils ont publiées. Ces commandes sont celles que l’on retrouve dans la plupart des périphériques acceptant le SCSI et donc dans une clé USB.
INQUIRY
La commande INQUIRY permet d’obtenir les informations concernant le périphérique. Plus précisément, cette requête demande à ce que les informations soient envoyées vers l’hôte. Cette requête peut être effectuée dès que le périphérique est alimenté. Nul besoin que la séquence d’initialisation soit finie pour cela.
TEST UNIT READY
La commande TEST UNIT READY permet de déterminer si le périphérique est alimenté et prêt à recevoir d’autres commandes. Elle revoit 00h si l’unité est prête et 02h si elle ne l’est pas ou si d’autres conditions doivent être vérifiées.
WRITE (6)
La commande WRITE (6) permet de transférer des blocs logiques venant de l’hôte afin que ces derniers soient écrits sur le périphérique. En français, cela veut dire que c’est, entre autres, la commande utilisée pour la copie des données.
Cette commande a été rendue obsolète par la INCITS, mais elle est pourtant toujours présente dans de nombreux périphériques. Elle est désormais remplacée par WRITE (10), WRITE (12), WRITE (16) ou encore WRITE (32).
READ (6)
La commande READ (6) permet, comme son nom laisse entendre, de lire les données contenues dans la clé USB. Cette lecture s’effectue en transférant ces données vers le tampon d’entrée de l’hôte.
Tout comme la commande WRITE (6), celle-ci est également de nos jours obsolète. Des commandes similaires existent afin de la remplacer, à l’instar de READ (10), READ (12) et READ (16). La différence majeure entre ces commandes, et c’est valable pour les commandes WRITE et READ, est la taille d’un bloc.