# Pilote informatique

Un pilote informatique (driver), ou un pilote de périphérique, souvent abrégé en pilote, est un programme informatique destiné à permettre à un autre programme (souvent un système d'exploitation) d'interagir avec un périphérique. En général, chaque périphérique a son propre pilote. Dit de manière simplifiée, un pilote d'imprimante est un logiciel qui traduit les ordres de l'utilisateur (le système) dans le langage de l'imprimante. Sans pilote, l'imprimante ou la carte graphique par exemple ne pourraient pas être utilisées. Un pilote manquant dans le système peut être, lors de son besoin, recherché et téléchargé d'un répertoire du Web pour son installation.
Certains systèmes d'exploitation comme Windows proposent leurs propres pilotes génériques censés fonctionner de manière satisfaisante avec la plupart des périphériques pour une utilisation courante. Si ces pilotes gèrent les grandes fonctions communes à tous les matériels, ils n'ont pas toujours toutes les capacités des pilotes de constructeurs, qui seuls connaissent parfaitement et en détail les spécifications du matériel piloté.

## Installation d'un pilote

Lors de l'installation d'un nouveau composant ou d'un nouveau périphérique, il est nécessaire d'installer le pilote, généralement fourni par le constructeur. Sur de nombreux systèmes d'exploitation, la procédure Plug-and-Play détecte automatiquement le nouveau composant ou le nouveau périphérique. Il est cependant parfois nécessaire de lui fournir le support du pilote (CD-ROM, DVD ou emplacement), puis de procéder à l'installation et au paramétrage.
La qualité des pilotes est souvent essentielle pour obtenir de bons résultats sur le fonctionnement des composants ou des périphériques. On peut aussi trouver sur le Web des pilotes plus ou moins généralistes pour un type de matériel donné, ou au contraire capables d'améliorer les performances générales du composant ou du périphérique, ou même d'utiliser des fonctions cachées. Cependant, pour un maximum de sécurité, il est préférable d'utiliser les pilotes fournis par les constructeurs et d'utiliser les versions les plus récentes. Ces versions sont généralement disponibles sur leurs sites Web respectifs.

## Pilotes selon les système d'exploitation

Certains systèmes d'exploitation proposent leurs propres pilotes génériques.

### Linux

Sous Linux, les pilotes n'ont pas besoin d'être téléchargés car ils sont fournis avec la distribution la plupart du temps (logiciel libre).
Il existe trois classes de pilotes dans les systèmes d'exploitation de type GNU/Linux :
* char driver, qui communiquent avec le périphérique par flux d'octets.
* block driver, qui communiquent avec le périphérique par blocs de données.
* net, qui permettent de gérer les ressources réseaux.
Les pilotes de type char driver et block driver sont accessibles grâce à des fichiers spéciaux, nodes, qui se trouvent dans le dossier /dev. Un même pilote peut gérer plusieurs périphériques.

### Windows
## Différents pilotes

À cause de la diversité des matériels modernes et des systèmes d'exploitation, il existe une multitude de pilotes. Ils gèrent l'interface entre le système d'exploitation (voire application à l'époque du DOS) et le matériel :
* des imprimantes ;
* des cartes vidéo ;
* des cartes réseau ;
* des cartes son (par exemple : pilotes Realtek AC'97 Audio, rvlkl.exe) ;
* des bus locaux de divers types, en particulier pour gérer les bus sur les systèmes modernes ;
* des bus d'entrée/sortie de plusieurs types (par exemple pour les souris, claviers, l'Universal Serial Bus (USB), etc.) ;
* des disques durs (ATA, Serial ATA, SCSI). En revanche les systèmes de fichiers (NTFS, ReiserFS, ext3fs) ne sont pas considérés comme des pilotes car ils s'adressent non au matériel lui-même, mais déjà à une abstraction de celui-ci ;
* des scanners, appareils photo numériques, téléphone et caméscopes.
Les niveaux d'abstraction pour les pilotes sont fréquemment :
* Du côté matériel :
** Interfaçage direct ;
** Utilisation d'une interface de plus haut niveau (par exemple : vidéo BIOS) ;
** Utilisation d'un autre pilote de plus bas niveau (par exemple : les pilotes de systèmes de fichiers) ;
** Simulation du fonctionnement avec un matériel, alors qu'il fait complètement autre chose ;
* Du côté logiciel :
** Permettre au système d'exploitation l'accès direct aux ressources matérielles ;
** Mettre en œuvre uniquement des primitives ;
** Mettre en œuvre une interface pour logiciel sans pilote (par exemple : TWAIN) ;
** Mettre en œuvre un langage, parfois de haut niveau (par exemple : PostScript).
Au contraire de la plupart des logiciels de niveau utilisateur, qui peuvent être arrêtés sans affecter le reste du système, un bug dans un pilote peut mener à des dysfonctionnements du système, et dans de plus rares cas sévèrement endommager les données voire le matériel lui-même.

## Création des pilotes

Mettre au point un pilote nécessite de connaître les spécifications du matériel piloté. Pour cette raison, les entreprises qui développent le matériel sont les plus à même d'écrire les pilotes, étant donné qu'elles ont plus que quiconque un accès complet aux informations relatives à la conception du matériel. Qui plus est, on considère traditionnellement que l'intérêt des constructeurs est de permettre aux utilisateurs le fonctionnement optimal de leur matériel. Cependant, ces dernières années ont montré que nombre de pilotes ont été écrits par des non-constructeurs, souvent pour l'usage sous divers systèmes d'exploitation libres. Dans ces cas, la coopération avec le constructeur reste importante, même si la rétro-ingénierie, bien plus complexe avec le matériel qu'avec le logiciel, permet de se passer d'une telle coopération au prix de beaucoup de temps passé à apprendre et comprendre comment fonctionne le matériel dont l'interface est inconnue.

## Téléchargement des pilotes

Les téléchargements des pilotes sont généralement proposés gratuitement sur les sites web des constructeurs.