USB signifie Universal Serial Bus, soit Bus en Série Universelle. Pour faire simple, il s'agit d'une interface externe standard qui permet la communication entre l'ordinateur et plusieurs autres périphériques. Parmi les périphériques les plus communément utilisés actuellement, il y a les claviers, les souris, les mémoires USB, les appareils photos numériques, les graveurs CD et DVD externes, les imprimantes etc.
Il existe actuellement deux versions de l'USB : USB 1.1 et USB 2.0. Dans la mesure où l'USB a toujours proposé une compatibilité ascendante avec les versions antérieures, l'USB 2.0 est compatible avec la version 1.1. Les derniers périphériques USB sont en général compatibles avec l'USB 2.0. L'USB 2.0 permet une vitesse de transmission maximum des données de 480Mbps ou 60Mbps comme pour l'USB 1.1, et c'est là la plus grande différence entre les deux standards. Un autre avantage de l'USB est que tous les périphériques peuvent se connecter et déconnecter à chaud ce qui signifie que vous n'avez pas besoin de redémarrer votre système pour pouvoir utiliser ces périphériques.
Avant de commencer avec les options de configuration du noyau, il est bon d'en
apprendre encore un peu plus sur l'USB. Si vous êtes pressés ou que vous
souhaitez sauter ce chapitre, passez directement à la
Un système USB est constitué d'un contrôleur d'hôte, des hubs, un
Le dispositif matériel fournit une interface pour le programmeur qui permet au système d'interagir avec le matériel. C'est le HCD, ou Host Controller Device (Dispositif de Contrôleur d'Hôte). C'est à travers le HCD que le périphérique va interagir avec le logiciel du système. Le diagramme suivant devrait vous aider à comprendre un peu mieux la chose.
(La partie logiciel concerne tous les autres composants mais par souci de simplicité ils ne sont pas détaillés + ----- Matériel ----- + ---- Logiciel ---- + | | | | [Disp USB] -+-> {EHCI} -+---> ( EHCD ) | | | | | Utilisateur | `-> {UHCI} -+---> ( UHCD ) | | | | + ----- Matériel ----- + ---- Logiciel ---- +
Le périphérique USB peut soit utiliser un pilote personnalisé soit en utiliser
un déjà présent dans le système et qui est basé sur le concept de
C'est très facile de savoir si votre machine dispose du support USB 2.0 ou non.
Pour le découvrir nous utiliserons la commande
(Sur un système supportant l'USB 1.1, remarquez qu'il n'y a que l'UHCI) # lspci -v | grep USB 0000:00:04.2 USB Controller: Intel Corp. 82371AB/EB/MB PIIX4 USB (rev 01) (prog-if 00 [UHCI])(Sur un système supportant l'USB 2.0 remarquez que vous disposez de EHCI et UHCI) 00:1d.0 USB Controller: Intel Corp. 82801DB USB (Hub #1) (rev 01) (prog-if 00 [UHCI]) 00:1d.1 USB Controller: Intel Corp. 82801DB USB (Hub #2) (rev 01) (prog-if 00 [UHCI]) 00:1d.2 USB Controller: Intel Corp. 82801DB USB (Hub #3) (rev 01) (prog-if 00 [UHCI]) 00:1d.7 USB Controller: Intel Corp. 82801DB USB EHCI Controller (rev 01) (prog-if 20 [EHCI])
Grâce à la commande
Tout d'abord installez les sources du noyau de votre choix. Pour les besoins de
ce guide nous utiliserons
(pour un 2.6.x) # emerge gentoo-dev-sources(pour un 2.4.x) # emerge gentoo-sources
Maintenant, passons à la configuration du noyau.
# cd /usr/src/linux # make menuconfig
Maintenant nous allons jeter un oeil sur certaines des options que nous devrons
activer sur notre noyau 2.6 pour assurer un support USB correct pour vos
périphériques. Si vous utilisez un noyau 2.4, passez au chapitre sur les
Device Drivers ---> SCSI device support --->(Même si le SCSI sera activé automatiquement en sélectionnant le support de l'USB Mass Storage, vous devrez activer le support de disques.) --- SCSI support type (disk, tape, CD-ROM) <*> SCSI disk support(Puis passez au support USB) USB support --->(C'est le hub principal et il est nécessaire pour le support USB. Si vous voulez le compiler comme module, son nom est usbcore.) <*> Support for Host-side USB(Activez cette fonction pour voir vos périphériques USB dans /proc/bus/usb. Nous vous le recommandons.) [*] USB device filesystem(Choisissez au moins l'un de ces HCDs. Si vous n'êtes pas sûr, sélectionnez-les tous.) --- USB Host Controller Drivers <*> EHCI HCD (USB 2.0) support < > OHCI HCD support <*> UHCI HCD (most Intel and VIA) support(Plus bas, activons le support CDC et stockage de masse.) < > USB Modem (CDC ACM) support <*> USB Printer support <*> USB Mass Storage support [*] USB Mass Storage Write-Protected Media Detection (EXPERIMENTAL)(Ensuite les éléments HID. Vous devez sélectionner le support des entrées HID si vous avez un périphérique d'entrée USB comme un clavier, une souris, un joystick...) --- USB Input Devices <*> USB Human Interface Device (full HID) support [*] HID input layer support(Si vous avez une carte réseau USB comme le RTL8150 vous aurez besoin de ces éléments.) USB Network Adapters ---> <*> USB RTL8150 based ethernet device support (EXPERIMENTAL)(Si vous avez un convertisseur USB -> port série comme le Prolific 2303 vous aurez besoin de ces éléments.) USB Serial Converter support ---> <*> USB Serial Converter support <*> USB Prolific 2303 Single Port Serial Driver (NEW)
Maintenant que les options sont mises vous devez (re)compiler le noyau et le
support USB devrait être fonctionnel dès le prochain redémarrage sur votre
nouveau noyau. Vous pouvez maintenant passer au chapitre
Nous allons maintenant voir les options que vous devrez activer pour avoir un
support correct de vos périphériques USB sur votre machine pour un noyau 1.4. Si
vous utilisez un noyau 2.6 allez au chapitre
(Cette partie n'est nécessaire que pour ceux qui disposent de d'interfaces d'entrée USB. Le support est plus tard nécessaire pour le USB HID) Input core support ---> <*> Input core support < > Keyboard support < > Mouse support < > Event interface support USB support --->(C'est le hub principal et il est nécessaire pour le support USB. Si vous voulez le compiler comme module, son nom est usbcore.o) <*> Support for USB(Activez cette fonction pour voir vos périphériques USB dans /proc/bus/usb. Nous vous le recommandons.) [*] Preliminary USB device filesystem(Choisissez au moins l'un de ces HCDs. Si vous n'êtes pas sûr, sélectionnez-les tous.) --- USB Host Controller Drivers <*> UHCI Alternate Driver (JE) support < > OHCI (Compaq, iMacs, OPTi, SiS, ALi, ...) support(Ceci est la section des périphériques. Choisissez seulement ceux dont vous avez besoin.) --- USB Device Class drivers < > USB Audio support <*> USB Mass Storage support < > USB Modem (CDC ACM) support <*> USB Printer support(Ensuite les éléments HID. Vous devez sélectionner le support des entrées HID si vous avez un périphérique d'entrée USB.) --- USB Human Interface Devices (HID) <*> USB Human Interface Device (full HID) support [*] HID input layer support(Si vous avez un convertisseur USB -> port série comme le Prolific 2303 vous aurez besoin de ces éléments.) USB Serial Converter support ---> <*> USB Serial Converter support <*> USB Prolific 2303 Single Port Serial Driver (NEW)
Maintenant que les options sont mises vous devez (re)compiler le noyau et le support USB devrait être fonctionnel dès le prochain redémarrage sur votre nouveau noyau.
Le temps est enfin venu de jouer avec vos périphériques USB. Dans ce chapitre
nous verrons comment le système répond aux différents périphériques USB. Nous
commencerons par connecter une clef USB de 512Mo de mémoire. Vous pouvez
utiliser évidemment un périphérique similaire pour suivre l'exemple. Nous
commencerons par utiliser
(Connectez votre clef USB sur un port USB libre puis...) # dmesg(Le périphérique est connecté en USB 1.1 et récupère une adresse. Nous remarquons au passage que le HCD est utilisé.) usb 1-1: new full speed USB device using uhci_hcd and address 2(L'émulation SCSI est automatiquement activée.) scsi0 : SCSI emulation for USB Mass Storage devices usb-storage: device found at 2(Viennent les informations relatives au périphérique, notamment le numéro du modèle utilisé.) usb-storage: waiting for device to settle before scanning Vendor: JetFlash Model: TS512MJF2A Rev: 1.00 Type: Direct-Access ANSI SCSI revision: 02 SCSI device sda: 1003600 512-byte hdwr sectors (514 MB)(La protection d'écriture est un code expérimental sur les derniers noyaux.) sda: Write Protect is off sda: Mode Sense: 0b 00 00 08 sda: assuming drive cache: write through SCSI device sda: 1003600 512-byte hdwr sectors (514 MB) /dev/scsi/host0/bus0/target0/lun0: p1 Attached scsi removable disk sda at scsi0, channel 0, id 0, lun 0 Attached scsi generic sg0 at scsi0, channel 0, id 0, lun 0, type 0 usb-storage: device scan complete(Le périphérique est normalement accessible en montant /dev/sda1.) (Quand le périphérique est déconnecté le système vous en informera également.) usb 1-1: USB disconnect, address 2
Une fois le périphérique connecté et monté vous pouvez y accéder comme si
c'était un disque dur normal. Les opérations habituelles comme
# mount /dev/sda1 /mnt/usb # df -h Filesystem Size Used Avail Use% Mounted on /dev/hda8 9.4G 7.5G 1.9G 80% / /dev/hda9 11G 8.1G 2.4G 78% /usr none 189M 0 189M 0% /dev/shm /dev/sda1 490M 34M 457M 7% /mnt/usb
Comment sera reconnue une souris USB pour le cas où vous en auriez une ? Elle sera reconnu comme étant un périphérique HID.
# dmesg | grep USB drivers/usb/input/hid-core.c: v2.0:USB HID core driver usb 1-1: new low speed USB device using address 2 input: USB HID v1.10 Mouse [Logitech USB-PS/2 Optical Mouse] on usb-0000:00:07.2-1
Une autre commande très utile que vous pouvez utiliser pour voir le statut de
vos ports USB est
Nous avons vu jusqu'à présent à quel point le noyau et le système supportent l'USB sur Linux. Maintenant nous allons jeter un oeil sur le support proposé par Gentoo pour l'USB pour l'utilisateur.
L'un des outils les plus utiles est
# emerge usbutils
Une fois installé il vous suffit d'exécuter
# lsusb(Voici la clef USB de 512Mo de chez Transcend) Bus 001 Device 003: ID 0c76:0005 JMTek, LLC. USBdisk(Voici la souris optique) Bus 001 Device 002: ID 046d:c00e Logitech, Inc. Optical Mouse(Et enfin le hub principal) Bus 001 Device 001: ID 0000:0000
Si vous faites partie de ceux qui aiment avoir beaucoup d'informations vous
pouvez utiliser l'option
# lsusb -t Bus# 1 `-Dev# 1 Vendor 0x0000 Product 0x0000 |-Dev# 2 Vendor 0x046d Product 0xc00e `-Dev# 3 Vendor 0x0c76 Product 0x0005
Vous pouvez alors facilement faire le lien entre les sorties de
Gentoo met à votre disposition deux paquets :
Le Firmware peut être défini comme un logiciel embarqué sur du matériel. Il est chargé et exécuté mais n'est pas facilement modifiable. De nombreux périphériques disposent d'un firmware pour s'assurer qu'ils fonctionnent correctement. Souvent, le firmware contient du code critique pour s'assurer que le matériel fonctionne comme attendu de lui. Les firmwares sont présents dans bien des périphériques informatiques, depuis les puces ROM jusqu'aux périphériques USB et aux cartes PCMCIA. Quand un périphérique est connecté le firmware (qui peut dans certains cas être également le pilote) est lu et chargé en mémoire. Après quoi le périphérique pourra être utilisé par le système.
Pour faire rapide, Gentoo utilise le paquet
# emerge hotplug
Maintenant la question évidente est : Qu'est-ce que coldplug et à quoi ça
sert.
# emerge coldplug(Et vous pouvez l'ajouter au niveau de lancement boot) # rc-update add coldplug boot * coldplug added to runlevel boot * rc-update complete.
J'ai utilisé un bon nombre de documents sur Internet pour écrire celui-ci. Certains d'entre eux sont très techniques mais vraiment intéressants. Je pense qu'ils méritent tous une certaine attention.
1)
2)
3)
4)
5)