Je décris ici le support du Toshiba Portégé R200 (oui oui, c'est bien Portégé le nom, sûrement un gars de chez Toshiba qui a voulu faire le malin en donnant un nom français à la gamme mais qui s'est planté) sous Debian GNU/Linux Etch. J'ai acheté le mien d'occasion (3 mois) à un particulier, je n'ai donc pas payé à proprement parler la licence Windows - heureusement car elle ne me sert pas - et j'ai eu avec le graveur DVD et une batterie externe pour 1600 €. Il est à noter qu'à la date de l'écriture de ces lignes (25/10/2006), Toshiba ne recommande que Windows XP Pro pour ses machines. Voilà pourquoi c'est un peu la lutte parfois pour faire fonctionner tel ou tel élément avec notre manchot préféré. La prochaîne fois je prendrais un IBM, certes leurs machines font un peu matos soviétique (vraiment très moche mais solide) mais eux au moins aiment le Libre et le démontrent...
Enfin bref, le sujet n'est pas là, il s'agit de faire tourner une Debian GNU/Linux sur le Portégé R200. Je vais commencer par sortir les spécifications techniques fournies dans un magnifique document PDF de chez Toshiba avant de passer à des données plus utiles, à savoir les relevés de lspci entre autres. Après, je rentre dans le vif du sujet avec les descriptions cas par cas des différents éléments du portable avec leur support sous Linux. Je finis évidemment par une (très) courte liste de mes sources d'informations.
Tout du long de mon parcours du matériel, je fournis les options 'qui-vont-bien' pour la compilation d'un noyau récent (2.6.18, téléchargeable sur le site kernel.org); je pars du principe que vous savez configurer, compiler et installer un noyau que ce soit façon Debian ou non. Si cela n'est pas le cas, je vous invite grandement à découvrir les joies de la compilation noyau (et des kernel panic pour vos premiers noyaux, c'est presque sûr) en lisant des tutoriaux disponibles par exemple sur Lea-Linux, Andesi, etc..
Matériel | Supporté? |
---|---|
Processeur: Intel Pentium-M ULV 753 | oui |
Chipset: Intel 915GMS Express | oui |
Processeur graphique: Intel GMA 900 | oui |
Processeur son: Intel ICH-6 AC'97 | oui |
Périphérique de pointage: ALPS GlidePoint | oui |
Modem RTC: Intel ICH-6 V.90/V.92 | non testé |
Carte réseau Ethernet: Marvell Yukon Gigabit | oui |
Carte réseau WiFi: Atheros 802.11b/g | oui |
Connexions Bluetooth: Toshiba Bluetooth | oui |
Connexions Infrarouge: Toshiba Infrarouge | non testé |
Gestion de l'énergie | oui |
Module de sécurité: Infineon TPM | oui |
Lecteur d'empreintes digitales: AuthenTec AES2501 | pas de pilote |
Lecteur de cartes SD: Texas Instruments PCI Controller | oui |
zir0faive@vanille:~$ lspci 00:00.0 Host bridge: Intel Corporation Mobile 915GM/PM/GMS/910GML Express Processor to DRAM Controller (rev 03) 00:02.0 VGA compatible controller: Intel Corporation Mobile 915GM/GMS/910GML Express Graphics Controller (rev 03) 00:02.1 Display controller: Intel Corporation Mobile 915GM/GMS/910GML Express Graphics Controller (rev 03) 00:1c.0 PCI bridge: Intel Corporation 82801FB/FBM/FR/FW/FRW (ICH6 Family) PCI Express Port 1 (rev 03) 00:1d.0 USB Controller: Intel Corporation 82801FB/FBM/FR/FW/FRW (ICH6 Family) USB UHCI #1 (rev 03) 00:1d.1 USB Controller: Intel Corporation 82801FB/FBM/FR/FW/FRW (ICH6 Family) USB UHCI #2 (rev 03) 00:1d.2 USB Controller: Intel Corporation 82801FB/FBM/FR/FW/FRW (ICH6 Family) USB UHCI #3 (rev 03) 00:1d.3 USB Controller: Intel Corporation 82801FB/FBM/FR/FW/FRW (ICH6 Family) USB UHCI #4 (rev 03) 00:1d.7 USB Controller: Intel Corporation 82801FB/FBM/FR/FW/FRW (ICH6 Family) USB2 EHCI Controller (rev 03) 00:1e.0 PCI bridge: Intel Corporation 82801 Mobile PCI Bridge (rev d3) 00:1e.2 Multimedia audio controller: Intel Corporation 82801FB/FBM/FR/FW/FRW (ICH6 Family) AC'97 Audio Controller (rev 03) 00:1e.3 Modem: Intel Corporation 82801FB/FBM/FR/FW/FRW (ICH6 Family) AC'97 Modem Controller (rev 03) 00:1f.0 ISA bridge: Intel Corporation 82801FBM (ICH6M) LPC Interface Bridge (rev 03) 00:1f.1 IDE interface: Intel Corporation 82801FB/FBM/FR/FW/FRW (ICH6 Family) IDE Controller (rev 03) 01:00.0 Ethernet controller: Marvell Technology Group Ltd. 88E8053 PCI-E Gigabit Ethernet Controller (rev 15) 02:05.0 Ethernet controller: Atheros Communications, Inc. AR5212 802.11abg NIC (rev 01) 02:0b.0 CardBus bridge: Texas Instruments PCIxx21/x515 Cardbus Controller 02:0b.4 Generic system peripheral [0805]: Texas Instruments PCI6411, PCI6421, PCI6611, PCI6621, PCI7411, PCI7421, PCI7611, PCI7621 Secure Digital (SD) Controller
zir0faive@vanille:~$ lsusb Bus 005 Device 001: ID 0000:0000 Bus 004 Device 001: ID 0000:0000 Bus 003 Device 001: ID 0000:0000 Bus 002 Device 001: ID 0000:0000 Bus 001 Device 003: ID 08ff:2580 AuthenTec, Inc. Bus 001 Device 001: ID 0000:0000
zir0faive@vanille:~$ lsusb Bus 005 Device 001: ID 0000:0000 Bus 004 Device 001: ID 0000:0000 Bus 003 Device 002: ID 0930:0508 Toshiba Corp. Bus 003 Device 001: ID 0000:0000 Bus 002 Device 001: ID 0000:0000 Bus 001 Device 003: ID 08ff:2580 AuthenTec, Inc. Bus 001 Device 001: ID 0000:0000
zir0faive@vanille:~$ cat /proc/bus/input/devices I: Bus=0011 Vendor=0001 Product=0001 Version=ab41 N: Name="AT Translated Set 2 keyboard" P: Phys=isa0060/serio0/input0 S: Sysfs=/class/input/input0 H: Handlers=kbd event0 B: EV=120013 B: KEY=4 2000000 3802078 f840d001 feffffdf ffefffff ffffffff fffffffe B: MSC=10 B: LED=7 I: Bus=0010 Vendor=001f Product=0001 Version=0100 N: Name="PC Speaker" P: Phys=isa0061/input0 S: Sysfs=/class/input/input1 H: Handlers=kbd event1 B: EV=40001 B: SND=6 I: Bus=0011 Vendor=0002 Product=0008 Version=0000 N: Name="PS/2 Mouse" P: Phys=isa0060/serio1/input1 S: Sysfs=/class/input/input2 H: Handlers=event2 mouse0 B: EV=7 B: KEY=70000 0 0 0 0 0 0 0 0 B: REL=3 I: Bus=0011 Vendor=0002 Product=0008 Version=7321 N: Name="AlpsPS/2 ALPS GlidePoint" P: Phys=isa0060/serio1/input0 S: Sysfs=/class/input/input3 H: Handlers=event3 mouse1 B: EV=f B: KEY=420 0 70000 0 0 0 0 0 0 0 0 B: REL=3 B: ABS=1000003
Le processeur est intégralement supporté par le noyau Linux, ajustement de fréquence et bit de non-exécution inclus.
Voici les options spécifiques à configurer pour le support de ce processeur:
Processor type and features: [ ] Symmetric multi-processing support Subarchitecture Type (X) PC-compatible Processor family (X) Pentium M <*> Toshiba Laptop support
Activer la gestion de la fréquence ajustable et l'utiliser se fait en 3 étapes
Voici les option à activer pour le support de Speedstep lors de la configuration du noyau:
Power management options (ACPI, APM) CPU Frequency scaling [*] CPU Frequency scaling <*> CPU frequency translation statistics [*] CPU frequency translation statistics details Default CPUFreq governor (X) performance --- 'performance' governor <*> 'powsersave' governor <*> 'userspace' governor for userspace frequency scaling <*> 'ondemand' cpufreq policy governor <*> 'conservative' cpufreq governor <*> ACPI Processor P-States driver <*> Intel Enhanced SpeedStep [*] Use ACPI tables to decode valid frequency/voltage pairs [*] Built-in tables for Banias CPUs
Désactivez les autres options de la page, elles sont inutiles voire gênantes.
Vous pouvez aussi ne sélectionner qu'un certain nombre de gouverneurs. Chaque gouverneur a ses caractéristiques dans la gestion de la vitesse du processeur:
Personnellement, je ne me sers que de 'conservative' mais j'ai toujours les autres gouverneurs disponibles au cas où la nécessité viendrait à se faire sentir.
cpufrequtils est le plugin HAL qui va nous permettre de définir le gouverneur à utiliser. Il s'installe le plus simplement du monde à l'aide d'apt:
root@vanille:linux# apt-get install cpufrequtils
La configuration de cpufrequtils se fait via le fichier /etc/default/cpufrequtils. Vous trouverez dans le fichier des exemples de configuration ainsi qu'une description de la syntaxe à utiliser. Personnellement le contenu utile de mon fichier est le suivant:
ENABLE="true" GOVERNOR="conservative" MAX_SPEED=0 MIN_SPEED=0
Traduction: cpufrequtils est activé, utilise le gouverneur 'conservative' et je n'impose pas de limite de vitesse que ce soit pour le minimum ou le maximum.
Une fois que vous avez modifié et sauvé le fichier de configuration, on relance le service associé pour qu'il prenne en compte les modifications:
root@vanille:zir0faive# /etc/init.d/cpufrequtils restart
Le bit de Non-Exécution permet de marquer les zones de la mémoire qui n'hébergent pas du code exécutable comme étant non-exécutable, limitant ainsi grandement les risques d'exécution de code malveillant par exploitation d'une faille de type "buffer overflow". Cette option nécessite deux activations: une dans le BIOS et une dans le noyau.
Pour entrer dans le BIOS, allumez le Portégé et appuyez aussi tôt sur Esc (personnellement j'appuie dessus à répétition). Un message Check system. Then press [F1] key apparaît. Appuyez donc sur F1, c'est demandé si gentimenet. Si vous définissez un mot de passe à l'allumage de la bête, ce dernier vous sera demandé avant de que vous ne puissiez appuyer sur F1. Par contre, quand l'invite Password apparaît, il est trop tard pour appuyer sur Esc. Déplacez-vous dans la première page du BIOS à l'aide de la touche Bas pour atteindre Execute-Disable Bit Capability. Appuyez alors sur Espace pour activer l'option (Available). Appuyez alors sur End puis sur Y pour sauvegarder et quitter le BIOS.
Voici l'option à activer dans le noyau:
Processor type and features High Memory Support (X) 64GB
On peut vérifier l'activation du bit de Non-Exécution à l'aide de la commande suivante:
zir0faive@vanille:~$ dmesg | grep 'Execute Disable' NX (Execute Disable) protection: active
Le chipset est entièrement supporté par le noyau Linux au travers des options PCI, ATA, etc.. On notera que l'activation du Serial ATA est totalement dénuée d'intérêt car le disque dur est connecté à du P-ATA classique. Par contre, la carte réseau étant connectée à un port PCI-Express 1x, il faut activer le PCI Express.
Les pilotes graphiques d'Intel sont Open Source et intégrés au noyau. Pas besoin de gymnastique comme avec les cartes ATI ou nVidia pour l'installation, il suffit d'activer les options adéquates.
Voici les options de configuration du noyau 'qui-vont-bien':
Device Drivers Character devices <M> /dev/agpgart (AGP Support) <M> Intel 440LX/BX/GX, I8xx and E7x05 chipset support <M> Direct Rendering Manager (XFree86 4.1.0 and higher DRI support) <M> Intel 830M, 845G, 852GM, 855GM, 865G <M> i915 driver Graphics support <*> Support for frame buffer devices [*] VESA VGA graphics support
La partie sonore du chipset voit aussi ses pilotes Open Source et intégrés à Linux.
Options de configuration dans le noyau:
Device Divers Sound <*> Sound card support Advanced Linux Sound Architecture <*> Advanced Linux Sound Architecture <*> Sequencer support <*> Sequencer dummy support <*> OSS Mixer API <*> OSS PCM (digital audio) API [*] OSS PCM (digital audio) API - Include plugin system [*] OSS Sequencer API <*> RTC Timer support [*] Use RTC as default sequencer timer Generic devices <M> Dummy (/dev/null) soundcard <M> Virtual MIDI soundcard <M> MOTU MidiTimePiece AV multiport MIDI <M> UART16550 serial MIDI driver <M> Generic MPU-401 UART driver PCI devices <*> Intel/SiS/nVidia/AMD/ALi AC97 Controller
Le touchpad est un ALPS, il lui manque certaines caractéristiques habituelles des touchpad; principalement la détection de l'appui de 2 ou 3 doigts en même temps. Le support du branchement d'une souris additionnelle est parfaitement supporté.
Voici les options de configuration du noyau:
Device Drivers Input device support --- Generic input layer (needed for keyboard, mouse, ...) --- Userland interfaces <M> Mouse interface [*] Provide legacy /dev/psaux device (1024) Horizontal screen resolution (768) Vertical screen resolution <M> Event interface --- Input Device Drivers [*] Mouse --- Mouse <M> PS/2 Mouse Hardware I/O Ports --- Serial I/O support --- i8042 PC Keyboard controller <M> PCI PS/2 keyboard and PS/2 mouse controller
Le branchement d'une souris sur un port USB en supplément du touchpad est parfaitement possible, il faut juste s'assurer que l'USB est bien configuré dans le noyau ainsi que la souris est ajoutée dans le fichier /etc/X11/xorg.conf. Voilà ce que ça donne pour une souris USB dans le noyau:
Device Drivers USB Support <M> Support for Host-side USB --- Miscellaneous USB options [*] USB device filesystem [*] Enforce USB bandwidth allocation (EXPERIMENTAL) --- USB Host Controller Drivers <M> EHCI HCD (USB 2.0) support [*] Full speed ISO transactions (EXPERIMENTAL) [*] Root Hub Transaction Translators (EXPERIMENTAL) <M> UHCI HCD (most Intel and VIA) support --- USB Input Devices <M> USB Human Interface Device (full HID) support [*] HID input layer support USB HID Boot Protocol drivers <M> USB HIDBP Mouse (simple Boot) support
Ce modem est a priori supporté sous Linux, cependant, n'en ayant aucunement l'utilité je n'ai jamais essayé de le faire fonctionner.
Voici l'option qui devrait aller dans la configuration du noyau (vous devriez l'avoir vue en configurant le son car c'est le même chip qui gère à la fois le son et le modem):
Device Drivers Sound <M> Sound card support Advanced Linux Sound Architecture <*> Advanced Linux Sound Architecture PCI devices <*> Intel/SiS/nVidia/AMD MC97 Modem
La carte réseau n'était pas supportée jusqu'au noyau 2.6.16 (jusque là, je passais par une carte réseau en PCMCIA: ndiswrapper ne voulait pas du pilote pour windows de la carte); depuis tout va beaucoup mieux.
Voilà ce qu'il faut activer pour pouvoir utiliser la carte réseau de façon native:
Device Drivers Network device support [*] Network device support Ethernet (1000 Mbit) <M> SysKonnect Yukon2 support (EXPERIMENTAL)
La puce de la carte WiFi est de marque Atheros. Pas de pilotes Linux du fabricant, encore moins de la part de Toshiba, il faut se tourner vers madwifi (dont la HAL est proprio) ou ath-driver (qui est entièrement GPL). Ce dernier ne permettant pas l'usage du chiffrement WPA, j'ai installé le premier.
Voilà ce que ça donne dans la configuration du noyau:
Networking [*] Networking support <M> Generic IEEE 802.11 Networking Stack [ ] Enable full debugging output <M> IEEE 802.11 WEP encryption (802.1x) <M> IEEE 802.11i CCMP support <M> IEEE 802.11i TKIP encryption
madwifi étant en partie non libre, il est disponible dans la partie de l'archive Debian du même nom: non-free. Modifiez votre fichier de configuration /etc/apt/sources.list pour ajouter les paquets non-free. Chez moi, cela donne ça:
deb ftp://ftp.fr.debian.org/debian/ etch main non-free contrib deb-src ftp://ftp.fr.debian.org/debian/ etch main non-free contrib
Ensuite, pour installer le bazar (une fois que votre noyau est compilé, bien sûr), on met à jour le cache APT, on installe les paquets adéquats et on se sert de module assistant:
# apt-get update && apt-get install gcc-4.0 madwifi-source madwifi-tools madwifi-doc # m-a prepare && m-a a-i madwifi # modprobe ath_pci
Faire fonctionner le bluetooth sur ce damné Portégé R200 n'est pas une partie de plaisir. En effet, le périphérique est un périphérique USB qu'il faut activer via un appel ACPI. Cela requiert de patcher le noyau que vous compilez. Le patch est sous licence GPL et est une version mise à jour par Will GLOZER d'un autre patch. Il faut également activer le module suivant dans la configuration du noyau:
Power Management options (ACPI, APM) ACPI (Advanced Configuration and Power Interface) Support [*] ACPI Support <M> Toshiba Laptop Extras
Pour activer/désactiver l'interface bluetooth (dont je ne me sers que très occasionnellement), j'utilise deux fonctions définies dans le .bashrc de root:
function activer_bluetooth { echo -n "Activation du bluetooth" echo "power: 1" > /proc/acpi/toshiba/bluetooth echo "attach: 1" > /proc/acpi/toshiba/bluetooth echo "." } function desactiver_bluetooth { echo -n "Désactivation du bluetooth" echo "attach: 0" > /proc/acpi/toshiba/bluetooth echo "power: 0" > /proc/acpi/toshiba/bluetooth echo "." }
Je n'ai pas cherché à me servir de l'infrarouge mais a priori, je suppose qu'il s'agit d'un périphérique USB qu'il faut activer comme le bluetooth, nécessitant l'écriture d'un autre patch, probablement. Je n'ai pas plus d'information à ce sujet.
Pour prendre en charge la gestion des touches Fn+[F1-F12], il faut patcher acpid avec le patch modifié par Will GLOZER. Pensez aussi à activer l'option suivante dans le noyau:
Processor type and features <M> Toshiba Laptop support
De ce que j'ai testé, la sourdine (Fn+Esc), la suspension en RAM (Fn+F3), le basculement vers un moniteur externe (Fn+F5), le changement de luminosité (Fn+F6 et Fn+F7) et l'activation du ventilateur (Fn+3) fonctionnent.
Vous voulez vous servir du TPM? Bon, qu'à cela ne tienne, voici ce qu'il faut activer dans la configuration du noyau pour avoir accès au périphérique /dev/tpm0:
Device Drivers Character devices TPM devices <M> TPM Hardware Support <M> Infineon Technologies TPM Interface
J'aurai préféré que cela soit la gestion ACPI qui soit aussi simple à mettre en œuvre.
À l'heure où j'écris ces lignes, le support du lecteur d'empreintes digitales semble en être au stade de développement. Cependant, le périphérique est parfaitement visible sous Linux: il s'agit d'un périphérique USB intégré à la coque du Portégé. sane-find-scanner voit le périphérique mais à l'heure actuelle, aucun «backend» n'est disponible pour SANE
$ lsusb Bus 001 Device 003: ID 08ff:2580 AuthenTec, Inc. [...] $ sane-find-scanner [...] found USB scanner (vendor=0x08ff, product=0x2580 [Fingerprint Sensor]) at libusb:001:003 [...] $ scanimage -L No scanners were identified.[...]
Un «backend» est en cours de développement pour ce périphérique, allez jeter un œil sur cette page si ça vous intéresse. Hors-sujet: Vous avez remarqué? Encore un nom à la française! Et avec une faute, bien sûr, c'est toujours plus drôle que sans.
Jusqu'au noyau 2.6.17 (je crois), le lecteur de cartes SD ne fonctionnait pas sous Linux. Maintenant qu'il fonctionne autant en profiter. La puce qui gère la carte est une Texas Instruments. Les cartes insérées dans le lecteur apparaîtront dans /dev sous le nom de périphérique mmcblk*.
Voilà les options à activer dans le noyau pour que le lecteur fonctionne
Device Drivers MMC/SD Card support <M> MMC Support [ ] MMC debugging <*> MMC block device driver <*> Secure Digital Host Controller Interface support < > Winbond W83L51xD SD/MMC Card Interface support
Voici les principaux sites sur lesquels je suis allé piocher des informations pour m'aider à faire fonctionner le bestiau: