Linux sur le Toshiba Satellite M40

Le Toshiba Satellite M40 est un portable qui était vendu par Toshiba, dont les caractéristiques techniques sont accessibles ici. Ce portable n'est plus fabriqué mais peut être encore disponible d'occasion. Le but de cette page est de donner des indications sur l'installation de Linux 2.6 sur un Toshiba Satellite M40. L'installation décrite ici a été faite avec Linux Debian Sarge 3.1, en janvier 2006. Avec une distribution plus récente, comme Mandriva Linux 2008 One, l'installation est grandement simplifiée, et la plupart des composants sont détectés par l'installeur. Néanmoins, les informations se trouvant sur cette page peuvent être utiles dans le cas de distributions Linux plus difficiles d'utilisation que Mandriva. Voir aussi: Mise à Jour: La distribution Linux Slackware 13.0 a été testée sur le Toshiba Satellite M40. Tous les composants sont supportés, y compris la carte Atheros (WiFi) sans recompilation du noyau.

Tableau des composants supportés sous Linux 2.6

Composant Fabricant Modèle Supporté
CPU Intel Celeron Oui
Disque dur 60 Go Fujitsu MHV 2060 AH Oui
lecteur/graveur de DVD Matsushita UJ841-S Oui
Carte graphique ATI Radeon XPress 200 M Oui (VESA)
Ecran LCD Samsung WXGA 15'' Trubrite TFT Oui
Clavier Toshiba AZERTY 86 touches Oui
carte Ethernet Realtek RTL8139/810x NIC Oui
Controleur USB ATI SB400 Oui
IEEE 1394/iLink/Firewire Texas Instruments TSB43AB21 (OHCI compatible) Oui
PCMCIA Texas Instruments PCI 1410 Oui
Carte son Realtek AC97 Oui
WiFi (IEEE 802.11) Atheros AR5005G Oui
SMbus ATI SB400 Oui

Procédure d'installation

précautions initiales

L'installation a été faite en 2006 avec Linux Debian Sarge 3.1. Il a été nécessaire d'utiliser le mode expert26, et d'éviter de charger les modules, particulièrement "Card Services" pour ne pas planter l'ordinateur. La suite de l'installation n'a pas présenté de difficultés.

Partitionnement

La partition NTFS (occupée par Windows XP) peut être redimensionnée au moyen de l'utilitaire partman, avec l'option "manual partitioning". On peut ensuite sélectionner l'espace libre, et laisser partman créer les partitions pour Linux soit:
  1. partition /dev/hda2 de 7Go montée sur /
  2. une partition de swap /dev/hda5 de 1.4 Go
  3. partition /dev/hda6 de 31.7 Go montée sur /home

Installation de LILO

On peut ensuite installer LILO sur le MBR pour pouvoir choisir entre Linux et Windows XP. Le fichier lilo.conf est ici.

Configuration de X-Window

Lors de la configuration de X-Window, il faut utiliser le serveur X non accéleré pour les cartes aux normes VESA. Le touchpad Synaptics est reconnu comme une souris PS/2. Le programme xf86cfg peut être utilisé pour générer le fichier de configuration.

Bilan provisoire

La commande lspci donne le résultat suivant:
0000:00:00.0 Host bridge: ATI Technologies Inc: Unknown device 5a31 (rev 01)
0000:00:01.0 PCI bridge: ATI Technologies Inc RS480 PCI Bridge
0000:00:13.0 USB Controller: ATI Technologies Inc IXP SB400 USB Host Controller
0000:00:13.1 USB Controller: ATI Technologies Inc IXP SB400 USB Host Controller
0000:00:13.2 USB Controller: ATI Technologies Inc IXP SB400 USB2 Host Controller
0000:00:14.0 SMBus: ATI Technologies Inc IXP SB400 SMBus Controller (rev 11)
0000:00:14.1 IDE interface: ATI Technologies Inc Standard Dual Channel PCI IDE C ontroller ATI
0000:00:14.3 ISA bridge: ATI Technologies Inc IXP SB400 PCI-ISA Bridge
0000:00:14.4 PCI bridge: ATI Technologies Inc IXP SB400 PCI-PCI Bridge
0000:00:14.5 Multimedia audio controller: ATI Technologies Inc IXP SB400 AC'97 A udio Controller (rev 02)
0000:00:14.6 Modem: ATI Technologies Inc ATI SB400 - AC'97 Modem Controller (rev 02)
0000:01:05.0 VGA compatible controller: ATI Technologies Inc RS400 [Radeon Xpres s 200M]
0000:02:04.0 Ethernet controller: Atheros Communications, Inc. AR5005G 802.11abg NIC (rev 01)
0000:02:06.0 CardBus bridge: Texas Instruments PCI1410 PC card Cardbus Controlle r (rev 02)
0000:02:07.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL-8139/8139C
A ce stade, plusieurs composants ne fonctionnent pas de façon optimale. Par exemple, le disque dur et le lecteur de DVD n'utilisent pas l'UDMA, ce qui fait que leur vitesse de transfert ne dépasse pas 1,7 Mo/s. De même, la résolution maximale de X-Window est 800x600 seulement. D'autres composants, comme la carte son, la carte Wifi Atheros ou le modem interne ne sont tous simplement pas reconnus. Avec une distribution récente, tous les composants sont reconnus sans recompilation, et X-Window fonctionne en 1280x800. On peut corriger le probleme de X-Window en éditant le fichier XF86Config-4 et disposer d'une résolution 1024x768 (en principe 1280x800 est également supporté selon les messages de démarrage du serveur X). Le fichier corrigé est disponible ici. Il est également possible d'utiliser le pilote fglrx_4_3_0-8.20.8-1.i386.rpm disponible sur le site d'ATI. Ce pilote permet d'obtenir la résolution 1280x800. Les autres problèmes sont résolus en recompilant le noyau.

Compilation et installation du noyau 2.6.15

Pour cela, on a téléchargé les sources du noyau 2.6.15 sur kernel.org. Le fichier .config est ici. Quelques options de compilation importantes: quelques options inutiles dans le fichier .config: I2O, 1-wire, toshiba_acpi, cpu_freq (voir plus bas). Après installation du nouveau noyau, la carte son et le modem interne sont reconus, et le disque dur et le lecteur/graveur de DVD fonctionnent respectivement en UDMA/100 et UDMA/33. La commande cat /proc/asound/card1/codec97#0/mc97#1-1 indique que le modem interne est du type Silicon Laboratory Si3036,8 rev 15. Ce modem semble compatible avec slmodem disponible sur linmodem.

Pilotes pour la carte Wifi Atheros

Même si le noyau supporte les réseaux sans fil, il est nécessaire d'avoir un pilote pour la carte Atheros pour pouvoir se connecter à un tel réseau. pour cela, on doit utiliser le module Madwifi. Les sources de ce module se trouvent sur http://www.madwifi-project.org. Pour linux 2.6.15, il faut récupérer le paquet madwifi-0.9.0.tar.bz2. La compilation se fait selon les instructions du fichier INSTALL. Pour se connecter à un hotspot wifi, il suffit ensuite d' utiliser les commandes ifconfig ath0 up, iwconfig essid "Nom du Hotspot", dhclient. Mise à jour: Les versions récentes du noyau linux incluent le pilote ath5k pour les cartes Atheros qui rendent l'installation de Madwifi inutile.

ACPI

Le Satellite M40 utilise un BIOS Phoenix, qui n'est pas compatible avec le BIOS Toshiba. Les modules toshiba et toshiba_acpi sont donc inutiles. On doit se contenter des modules ACPI génériques de Linux. La décompilation de la table DSDT avec iasl montre qu'il n'y a pas de problème avec le support ACPI dans le BIOS, mais que certaines fonctions (telles que le contrôle de la luminosité de l'écran) ne sont pas accessibles via ACPI.

Ce qui fonctionne avec les modules génériques

Ce qui ne fonctionne pas avec les modules génériques

Le "suspend to mem" met bien l'ordinateur en veille, mais presser sur le bouton de mise en marche ne permet pas à l'ordinateur de redémarrer correctement. En particulier, l'écran reste éteint, et le ventilateur tourne en permanence. La seule solution est de couper le courant (en pressant le bouton marche/arrêt suffisamment longtemps). Il est également impossible de modifier l'éclairage arrière de l'écran LCD. En ce qui concerne les touches Fn+Fx, si Fn+F5 permet bien d'envoyer l'affichage sur un écran externe, et si Fn+F10 transforme bien les touches 789UOJKL?/ en touches de déplacement, Fn+F11 transforme bien les touches 7890IOPJKLM?/§ en pavé numérique, les autres touches sont inactives. Pour pallier cette situation, certain modules (qui ne font pas partie du noyau Linux) ou programmes ont été essayés. Aucun de ces modules ou programmes n'a produit de résultat satisfaisant.

Le module omnibook

Le BIOS Phoenix des Toshiba Satellite est analogue a celui des HP Omnibook. Le pilote omnibook apparaissait donc comme susceptible d'améliorer le fonctionnement d'ACPI sur le Satellite M40. Ce module n'a donné que des résultats décevants. Selon les versions du module, soit les données affichées dans /proc/omnibook sont aberrantes (batteries Ni-Cd au lieu de Li-ion, erreurs sur la présence ou l'absence de l'adaptateur secteur), soit /proc/omnibook ne contient que la version du Bios. Par exemple, avec la dernière version 2.20090707-trunk et linux 2.6.29, on obtient les messages suivants: /var/log/syslog: kernel: omnibook: Probing at SMSC Mailbox registers failed, disabling NbSmi /var/log/messages: kernel: omnibook: Toshiba Satellite M40 detected. kernel: omnibook: Begin table match of bluetooth feature . kernel: omnibook: Try to init NbSmi kernel: omnibook: NbSmi test probe read: ff kernel: omnibook: Backend nbsmi init failed, skipping en try. kernel: omnibook: Match failed: disabling bluetooth. kernel: omnibook: Begin table match of display feature. kernel: omnibook: NbSmi backend init already failed, ski pping. kernel: omnibook: Backend nbsmi init failed, skipping en try. kernel: omnibook: Returning table entry nr 2. kernel: omnibook: Begin table match of hotkeys feature. kernel: omnibook: NbSmi backend init already failed, skipping. kernel: omnibook: Backend nbsmi init failed, skipping entry. kernel: omnibook: Match failed: disabling hotkeys. kernel: omnibook: dmi feature has no backend table, io_op not initialized. kernel: omnibook: version feature has no backend table, io_op not initialized. kernel: omnibook: Begin table match of lcd feature. kernel: omnibook: NbSmi backend init already failed, skipping. kernel: omnibook: Backend nbsmi init failed, skipping entry. kernel: omnibook: Match failed: disabling lcd. kernel: omnibook: Begin table match of wifi feature. kernel: omnibook: NbSmi backend init already failed, skipping. kernel: omnibook: Backend nbsmi init failed, skipping entry. kernel: omnibook: Match failed: disabling wifi. kernel: omnibook: Enabled features: display dmi version. /proc/omnibook/dmi BIOS Vendor: Phoenix Technologies LTD BIOS Version: 1.10 BIOS Release: 08/24/05 System Vendor: TOSHIBA Product Name: Satellite M40 Version: PSM44E-00U00EFR Serial Number: 95096786Q Board Vendor: ATI Board Name: Rev0.4b /proc/omnibook/display External VGA: display absent /sys/module/omnibook/parameters/ectype 13 Il est possible de forcer l'utilisation d'un autre type de controleur que celui qui est autodétecté avec l'option ectype=xx. Normalement, le Satellite M40 fonctionne avec ectype=13. Si on utilise l'option ectype=12 (Toshiba Satellite M40X, M70), on obtient les messages: /var/log/syslog: Jul 24 14:31:06 sashimi kernel: omnibook: Forced load with EC type 12. Jul 24 14:31:06 sashimi kernel: omnibook: check_default_state timeout. Jul 24 14:31:06 sashimi kernel: omnibook: EC state check failure, please report. Jul 24 14:31:06 sashimi kernel: omnibook: Init function of bluetooth failed with error -19. Jul 24 14:31:06 sashimi kernel: omnibook: Init function of display failed with error -19. Jul 24 14:31:06 sashimi kernel: omnibook: Init function of wifi failed with error -19. /var/log/messages: kernel: omnibook: Try to init ACPI backend kernel: omnibook: ACPI EC device found kernel: input: Omnibook ACPI scancode generator as /devices/virtual/input/input9 kernel: omnibook: hook_connect for device AT Translated Set 2 keyboard. kernel: omnibook: ACPI backend init OK kernel: omnibook: Returning table entry nr 0. kernel: omnibook: Enabled features: ac battery blank dmi version lcd temperature throttling. kernel: omnibook: LCD backlight turn off at console blanking is disabled. kernel: omnibook: Trying to dispose ACPI backend kernel: omnibook: ACPI backend not used anymore: disposing kernel: omnibook: ptr addr: dcf45160 driver name: omnibook kernel: omnibook: hook_disconnect. kernel: omnibook: Module is unloaded. Dans le répertoire sys, on trouve un nouveau répertoire /sys/devices/virtual/backlight/ et un répertoire /sys/devices/virtual/input/input9/. Dans input9 on trouve les fichiers et répertoires: capabilities/ event6/ id/ modalias name phys power/ subsystem uevent uniq Le répertoire capabilities contient les fichiers: abs ev ff key led msc rel snd sw. Avec ectype=15 (Toshiba Satellite M30X): /var/log/messages: Jul 24 14:39:59 sashimi kernel: omnibook: Driver version 2.20090707-trunk. Jul 24 14:39:59 sashimi kernel: omnibook: Begin table match of ac feature. Jul 24 14:39:59 sashimi kernel: omnibook: Returning table entry nr 0. Jul 24 14:39:59 sashimi kernel: omnibook: Begin table match of battery feature. Jul 24 14:39:59 sashimi kernel: omnibook: Returning table entry nr 0. Jul 24 14:39:59 sashimi kernel: omnibook: Begin table match of blank feature. Jul 24 14:39:59 sashimi kernel: omnibook: Returning table entry nr 1. Jul 24 14:39:59 sashimi kernel: omnibook: LCD backlight turn off at console blanking is enabled. Jul 24 14:39:59 sashimi kernel: omnibook: Begin table match of display feature. Jul 24 14:39:59 sashimi kernel: omnibook: Returning table entry nr 2. Jul 24 14:39:59 sashimi kernel: omnibook: Begin table match of hotkeys feature. Jul 24 14:39:59 sashimi kernel: omnibook: Returning table entry nr 0. Jul 24 14:39:59 sashimi kernel: omnibook: Enabling all hotkeys. Jul 24 14:39:59 sashimi kernel: omnibook: dmi feature has no backend table, io_op not initialized. Jul 24 14:39:59 sashimi kernel: omnibook: version feature has no backend table, io_op not initialized. Jul 24 14:39:59 sashimi kernel: omnibook: Begin table match of lcd feature. Jul 24 14:39:59 sashimi kernel: omnibook: Returning table entry nr 2. Jul 24 14:39:59 sashimi kernel: omnibook: Begin table match of temperature feature. Jul 24 14:39:59 sashimi kernel: omnibook: Returning table entry nr 0. Jul 24 14:39:59 sashimi kernel: omnibook: Enabled features: ac battery blank display hotkeys dmi version lcd temperature. /proc/omnibook/ac: AC off-line /proc/omnibook/battery: No battery present /proc/omnibook/lcd: LCD console blanking hook is enabled /proc/omnibook/display: External VGA: display absent /proc/omnibook/hotkeys: Onetouch buttons are enabled. /proc/omnibook/lcd: LCD brightness: 5 (max value: 7) /proc/omnibook/temperature: CPU temperature: 0 C Les valeurs pour ectype=12,15sont aberrantes (la batterie et l'adaptateur étaient présents lors du test, la température du processeur était 47°C). Avec ectype=11 (Toshiba Satellite P10) /var/log/syslog: Jul 24 15:08:36 sashimi kernel: omnibook: Forced load with EC type 11. Jul 24 15:08:36 sashimi kernel: omnibook: Assuming that LCD brightness is between 0 and 10, Jul 24 15:08:36 sashimi kernel: omnibook: please contact http://sourceforge.net/projects/omnibook to confirm. /var/log/messages: Jul 24 15:08:36 sashimi kernel: omnibook: Begin table match of ac feature. Jul 24 15:08:36 sashimi kernel: omnibook: Returning table entry nr 0. Jul 24 15:08:36 sashimi kernel: omnibook: Begin table match of battery feature. Jul 24 15:08:36 sashimi kernel: omnibook: Returning table entry nr 0. Jul 24 15:08:36 sashimi kernel: omnibook: Begin table match of blank feature. Jul 24 15:08:36 sashimi kernel: omnibook: Returning table entry nr 1. Jul 24 15:08:36 sashimi kernel: omnibook: LCD backlight turn off at console blanking is enabled. Jul 24 15:08:36 sashimi kernel: omnibook: Begin table match of display feature. Jul 24 15:08:36 sashimi kernel: omnibook: Returning table entry nr 2. Jul 24 15:08:36 sashimi kernel: omnibook: Begin table match of fan feature. Jul 24 15:08:36 sashimi kernel: omnibook: Returning table entry nr 0. Jul 24 15:08:36 sashimi kernel: omnibook: Begin table match of hotkeys feature. Jul 24 15:08:36 sashimi kernel: omnibook: Returning table entry nr 0. Jul 24 15:08:36 sashimi kernel: omnibook: Enabling all hotkeys. Jul 24 15:08:36 sashimi kernel: omnibook: dmi feature has no backend table, io_op not initialized. Jul 24 15:08:36 sashimi kernel: omnibook: version feature has no backend table, io_op not initialized. Jul 24 15:08:36 sashimi kernel: omnibook: Begin table match of lcd feature. Jul 24 15:08:36 sashimi kernel: omnibook: Returning table entry nr 2. Jul 24 15:08:36 sashimi kernel: omnibook: Begin table match of temperature feature. Jul 24 15:08:36 sashimi kernel: omnibook: Returning table entry nr 0. Jul 24 15:08:36 sashimi kernel: omnibook: Begin table match of touchpad feature. Jul 24 15:08:36 sashimi kernel: omnibook: Returning table entry nr 0. Jul 24 15:08:36 sashimi kernel: omnibook: Enabled features: ac battery blank display fan hotkeys dmi version lcd temperature touchpad. /proc/omnibook/ac: AC off-line /proc/omnibook/battery: Battery: 1 Type: NiMH Present Voltage: 0 mV Design Voltage: 3328 mV Remaining Capacity: 0 mAh Design Capacity: 0 mAh Gauge: 0 % Status: charged /proc/omnibook/lcd: LCD console blanking hook is enabled /proc/omnibook/display: External VGA: display absent /proc/omnibook/fan: Fan is on (level 11) /proc/omnibook/hotkeys: Onetouch buttons are enabled. /proc/omnibook/lcd: LCD brightness: 5 (max value: 10) /proc/omnibook/temperature: CPU temperature: 0 C /proc/omnibook/touchpad: Last touchpad action was an enable command. Avec ectype=1 (anciens modèles de Toshiba Satellite): /proc/omnibook/ac: AC off-line /proc/omnibook/battery: Battery: 1 Type: NiMH Present Voltage: 0 mV Design Voltage: 3328 mV Remaining Capacity: 0 mAh Design Capacity: 0 mAh Gauge: 0 % Status: charged /proc/omnibook/lcd: LCD console blanking hook is enabled /proc/omnibook/display: External VGA: display absent /proc/omnibook/fan: Fan is on (level 11) Fan off temperature: 0 C Fan on temperature: 0 C Fan level 2 temperature: 0 C Fan level 3 temperature: 243 C Fan level 4 temperature: 11 C Fan level 5 temperature: 243 C Fan level 6 temperature: 11 C Fan level 7 temperature: 243 C Minimal temperature to set: 25 C Maximal temperature to set: 95 C /proc/omnibook/hotkeys: Onetouch buttons are enabled. /proc/omnibook/lcd: LCD brightness: 5 (max value: 7) /proc/omnibook/temperature: CPU temperature: 0 C Last touchpad action was an enable command. On voit que les informations sur la batterie sont totalement fausses (c'est une Li-Ion avec un voltage de 10.8 Volts) ainsi que celles sur le ventilateur.

Les utilitaires lm_sensors

Ces utilitaires permettent de lire les informations telles que la température à partir des senseurs I2C/SMBus. La version 3 est compatible avec Linux 2.6.5 et supérieur. Cependant, sensors-detect ne détecte que le SMBus, et n'est pas en mesure de fournir la moindre information sur le matériel.

Autres modules

s1bl permet d'ajuster la luminosité de l'écran sur le Tecra S1. Contrairement à ce qui est écrit sur la page web, ce module est incompatible avec le Satellite M40-307 (la commande s1bl -g pour lire la luminosité donne brightness level: 0). De plus, il perturbe le BIOS. toshiba_smi par Alex Roman, utilise directement les instructions SMI. Il est également incompatible avec le Satellite M40-307 (mais selon la page web il est compatible avec le SM40-JM8). Retour à la page principale