Introduction
Ce que vous lisez la est une traduction: deux points importants donc :

-         Il s’agit de la capture a un instant donne du texte original, donc des diffs sont possibles

-         Il peut y avoir des différences de sens

Dans tous les cas, prenez la peine d’essayer de lire le texte original

Linux on Toshiba Satellite 2410

J'emploie Debian GNU/Linux. Je suis enchante de rapporter qu’il fonctionne comme un charme sur mon satellite 2410-404 de Toshiba. (oui, UT2003 fonctionne vraiment sans a-coup).

J’utilise Linux sur un satellite 2410-404 de Toshiba, mais tous les modeles de satellite de Toshiba 2410 , de même que les Toshiba 1410, devraient pouvoir faire tourner Linux de la même façon.

Yes, it's running Linux

Already working

NVIDIA, TV-OUT, DVD, USB, FIREWIRE, IRDA (also LIRC), APM, SOUND, PCMCIA, MODEM, LAN, WLAN (internal MiniPCI),ACPI. ADDITIONAL KEYS.

Special Workaround

KEYBOARD

Not working yet

SD-CARD

BIOS

Un mot sur le BIOS de votre Toshiba 2410. Pour entrer dans le dialogue du BIOS, maintenez la touche ESC lors de la mise sous tension jusqu'à l’invite d’appui sur F1. Pour choisir temporairement le bootdevice, maintenir F12 a la mise sous tension. Un menu vous permettant de choisir un des bootdevices disponibles pour le demarrage courant apparaît. (ceci ne fonctionnera pas si vous utilisez un masterpassword et employez l'userpassword. Dans ce cas-ci, employez svp le masterpassword.)
Ce portable peut booter depuis le PCMCIA, plus précisément depuis une partition FAT12, FAT16 ou FAT32 sur une PCMCIA-ATA-card. Je me suis créé une petite distro linux avec X sur un disque flash de 4 Mo pour des opérations de backup et de sauvegarde; contactez moi si vous êtes intéressé …

Pour changer des settings du BIOS (depuis la console de Linux ou X) comme l’éclat de l'affichage, le nombre de minutes jusqu'à l’auto-off de l’affichage, mots de passe de bios, video-out, fan speed, etc. vous pouvez employer toshset (commandline) ou The Toshiba Linux Utils de Jonathan Buzzard. Tous les deux viennent habituellement avec votre distribution.

Ajuster l’éclat du display, fan state et vidéo out peut se faire grâce au module ACPI toshiba_acpi (voir paragraphe ACPI).

 

XFree86

Deux possibilités: utiliser les modules “Nvidia” (fortement recommandé) ou le driver “nv’ standard livre avec X.
Pour disposer de l’accélération 3D, vous devez vous procurer les modules nvidia-kernel et nvidia-glx module pour X, que vous trouverez généralement dans votre distro; dans le cas contraire, vous les trouverez
ici sur le site Nvidia. Depuis la version 1.0-4349, Nvidia livre ses packages sous la forme d’auto-installs (.run). Vous avez juste à les démarrer dans un terminal. Si vous les utilisez, vous pouvez ignorer le prochain paragraphe.

 

Installation depuis les sources

 

Des instructions d’install (ou dans le package).

Un utilisateur linux normalement expérimente le fera en cinq a dix minutes (ou une heure pour lire la documentation si vous n’avez jamais rien compilé).
Si vous utilisez une debian: lisez the #debian.de FAQ pour recompiler vos packages Nvidia.

Configurer XF86Config

Faire fonctionner la GeForce4 420 nécessite l’emploi de quelques astuces. Faites comme suit pour votre XF86Config-4.
Ajoutez une ligne dans la section "Module":

    Load    "glx"

Supprimez (commentez) si elles existent les lignes:

    Load    "GLcore"
    Load    "dri"

Dans la section "Device", replacez le module "nv" par "nvidia" ( vous devriez aussi spécifier le BusID ):

    Driver  "nvidia"
    BusID   "AGP:01:00:0"

DDC ne fonctionne pas bien sur ce portable. Il faut donc modifier la section "Device" en y ajoutant:

    Option  "NoDDC" "1"
    Option  "IgnoreEDID" "1"

Utiliser un TFT avec les drivers Nvidia nécessite l’ajout de ces deux lignes, toujours dans la section « Device » : 

    Option  "GenerateRTList"   "0"
    Option  "OverridePolarity" "1"

Dans la section "Screen", ajoutez:

    Option  "NoDDC" "1"
    Option  "NvAgp" "1"

Dans le registres des subtilités, il est possible d’obtenir une ombre translucide pour le pointeur X. Ajoutez les lignes suivantes dans la section "Device":

    # Some Pointer Eyecandy
    Option          "CursorShadow" "1"
    Option          "CursorShadowAlpha" "63"
    Option          "CursorShadowYOffset" "2"
    Option          "CursorShadowXOffset" "4"

Supprimer l’affreuse bande noire sous X

Nous y sommes presque. Démarrer X devrait réussi ; mais une affreuse bande verticale noire sur un bon dixième de l’écran apparaît a droite. Pour s’en debarraser, allez dans modules.conf et ajoutez :

    options NVdriver NVreg_SoftEDIDs=0 NVreg_Mobile=2

Si vous utilisez une debian: ne pas écrire directement dans /etc/modules.conf, puisque son contenu est regenere lors des upgrades. Ajoutez donc ces lignes dans /etc/modutils/NVdriver et lancez update-modules.

Fichiers XF86Config-4.

Vous pouvez prendre mes fichiers:
XF86Config-4 – pour le driver nvidia (acceleration)
XF86Config-4_nv - pour le driver nv (pas d’acceleration)

Debian users - listen up

Si vous utilisez une debian: Eduard Bloch me rappelle de mettre en garde les utilisateurs de Debian:

[..] Please note that when you install via make-install, the Nvidia crap irreversibly overwrittes your system files, and they are not preserved on package upgrades. Debian metapackages are a nifty way to work around this problem.[..]

En fait, /usr/lib/libGL.so (qui est aussi dans xlibmesa-dev) et tous les fichiers /lib/modules/<kernel-version>/modules.* (qui se trouvent dans kernel-image-<kernel-version>) seront supprimés. Préservez les anciens par depmod -a.

TV-OUT

TV-Out fonctionne avec X et les pilotes commerciaux NVidia. En ce qui me concerne, j’utilise Twinview pour envoyer quelque chose sur la TV, l’écran de la télévision présentant le même contenu que l’écran TFT.
Dans la
Section "Screen", ajoutez:

    # TV Twinview
    Option         "TwinView" "1"
    Option         "SecondMonitorHorizSync" "30-50"
    Option         "SecondMonitorVertRefresh" "60"
    Option         "TwinViewOrientation" "Clone"
    Option         "TVOutFormat" "COMPOSITE"
    Option         "ConnectedMonitor" "DFP,TV"
    Option         "TVStandard" "PAL-B"
    Option         "MetaModes" "1024x768 @1024x768,1024x768 @1024x768; 800x600 @800x600,800x600 @800x600; 640x480 @640x480,640x480 @640x480"

Vérifiez que TVStandard correspond bien a votre téléviseur, et si vous préférez une sortie composite ou s-video. Vous trouverez toutes les explications sur les options dans le README livre avec nvidia-glx-package. Dual-Head (un bureau étend l’autre) est possible, ainsi bien sur que le CRT-Out.
Remarque:

Si TV-out n'est pas relie a  une TV ou un moniteur au démarrage de X, twinview sera neutralisé automatiquement.
Si par défaut vous ne voulez pas de TwinView, vous pouvez ajouter une
Section "Screen" dans votre XF86Config-4. La première sera laissée en l’état, la deuxième (a laquelle vous donnerez un Identifier différent, par exemple «TV» ) contiendra les modifications introduites plus haut. Vous trouverez un exemple sous le nom de  XF86Config-4_nvidia_twinview_tv dans la section files. Il suffit de le démarrer avec l’une des deux commandes:

    X -xf86config XF86Config-4_nvidia_twinview_new -layout Twinview :1
    X -xf86config XF86Config-4_nvidia_twinview_new -screen TV :1

Note: échangez vos expériences des drivers commerciaux Nvidia sur nV News Froums - Linux And NVIDIA Graphics.

Sound

La carte est reconnue par les modules intel8x0 d’alsa, et par les modules originaux du kernel.

Alsa

Allez voir la section files. Vous y trouverez ma configuration pour modules.conf pour ALSA 0.9. Prenez aussi asound.conf, à mettre dans /etc/asound.conf

OSS

Les modules nécessaires sont: soundcore sound ac97 ac97_codec v_midi uart401 cmpci i810_audio. Comme mon utilisation se limite à de l’expérimentation, je me suis fait un petit script audioscript2410 pour les tester, les installer et les supprimer. Une utilisation permanente nécessite que vous les installiez dans modules.conf

Keyboard

Mauvaise nouvelle: les contrôleur du clavier est buggy (il envoie erratiquement deux fois des messages de keyrelease, provoquant des double lettres). C’est un problème courant dans le monde des portables Toshiba, qui a aussi été note sur M$-Windoze98 pour de plus vieux portables. I agree, this sucks!
Ce problème a été abordé sur un forum, voyez ici. Citons Alan Cox qui dit au sujet de ces bugs matériels:

"Well there is one way to help stop that, which is not to fix them."

 

Bonne nouvelle: Il existe cinq solutions.

1.      Patcher le kernel.

o        Additional entry [13-Jan-2003]: Linux 2.4.21pre3-ac3 contient un path pour le kernel. Peut être la prochaine release contiendra-t-elle ce patch.

2.      Patcher le source de XFree

3.      Desactiver l’extension Xkb dans votre XF86Config – une bonne solution.

4.      Utiliser Xkb avec AccessX pour supprimer le keyboard bouncing - une autre bonne solution.

5.      Utiliser Xkb avec xkbset pour supprimer keyboard bouncing - encore une autre bonne solution.

Patcher vous oblige a patcher toutes les nouvelles releases des sources du kernel ou de Xfree. Si vous voulez-vous en charger vous-même, contactez-moi pour un patch du kernel. A solution plus simple est de désactiver l’extension Xkb (clavier américain par défaut, ce qui peut s’arranger, et vous donnera l’occasion d’implémenter votre propre keymap, avec par exemple les boutons Windows affectes à quelque chose d’utile ;). Sinon, utilisez AccessX or xkbset pour supprimer le keyboard-bouncing.

Desactiver l’Extension Xkb.

Creer votre propre keymap

Tout d'abord, nous avons besoin d'une keymap pour votre langue. Si vous avez bien configure votre section Keyboard dans XF86Config-4, entrez xmodmap -pke >> $HOME/Xmodmap dans un xterm pour en obtenir une.

Si votre langue a les caractères spéciaux (comme la mienne), vous pouvez vouloir définir des clefs de modificateur comme [ AltGr ]. Un excellent article sur la façon de créer des keymaps : Accented Letters On ASCII Keyboards Under X11. Ce document est également disponible en allemand. Si vous voulez une Xmodmap en Allemand, vous pouvez télécharger la mienne ici (aussi disponible en Italien et en Francais)

Reconfigurer XF86Config

Configurez la section keyboad. Supprimez toutes les options concernant "Xkb", et ajoutez l’option "XkbDisable". Au final, cela devrait ressembler a:

    Section "InputDevice"
        Identifier      "Generic Keyboard"
        Driver          "keyboard"
        Option          "CoreKeyboard"
        Option          "XkbDisable"
    EndSection

Autoload keymap

Nous aimerions que notre keymap soit chargée des que nous démarrons une Xsession. Selon le manuel, au démarrage d’une Xsession tous les scripts présents dans /etc/X11/Xsession.d sont exécutes. Copiez le script 40custom_load-xmodmap dans /etc/X11/Xsession.d/. Au démarrage, X prendra votre keymap dans $HOME/Xmodmap.

Si vous voulez que cette modification soit appliquée à tout le système, remplacez /etc/X11/Xmodmap par votre Xmodmap.

Extension Xkb avec AccessX

AccessX de Dan Lindner est un ensemble d’outils appliqués a l’extension XKEYBOARD de X Window System, qui y donnent un meilleur accès.
Pour l’utiliser afin de supprimer le keyboard-bouncing, téléchargez le
ici et exécutez:

    ax +bouncekeys 
    ax -timeout 
    ax bouncedelay 5 

Pour que ces commandes soient effectuées a chaque démarrage ajoutez ces lignes a la fin de /etc/X11/xdm/Xsetup, ou alternativement placez les dans votre fichier .xinitrc. Vous pouvez aussi utiliser un script comme expliqué plus haut.

Extension Xkb avec xkbset

Recuperez xkbset et executez:

    xkbset exp bo &>/dev/null
    xkbset bo 1 &>/dev/null 

Pour que ces commandes soient effectuées a chaque démarrage, reportez-vous aux instructions données plus haut.

Modem

Okay, c’est un softmodem. Et il y a un driver. Mais procédons par étapes.
Pour les soft modems sur AC'97 controller slots, le bus PCI-id décrit le contrôleur et le subsystem PCI-id décrit la carte modem. Jetons donc un coup d’œil au Bus PCI.

    00:1f.6 Modem: Intel Corp. 82801CA/CAM AC'97 Modem (rev 02) (prog-if 00 [Generic])
    00:1f.6 Class 0703: 8086:2486 (rev 02)    
    Subsystem 1179:0001

Notre vendor-id est 8086 (Intel). PCI-id 8086:2486 doit représenter notre contrôleur Intel MC97, auquel divers AC-Link modems peuvent être connectes. En ce qui concerne le modem, il a l’id 1179:0001. Le Subsystem vendor-id is 1179 (a savoir Toshiba). Mais qu’est ce qu’un modem d’id 0001? J’ai cherche sans succès. Cette information est sans intérêt.

Sous Windows et sur un terminal, les commandes ATI retournent:

    ATI1 - OK    
    ATI2 - OK
    ATI3 - TOSHIBA V.90 Data+Fax Software Modem Version 3.1.100
    ATI4 - Built on 09/26/2001 20:12:19
    ATI5 - 3.1.100, AMR Intel MB, AC97 ID:SIL REV:0x27, 06
    ATI6 - OK
    ATI7 - AMR Intel MB

Vous trouverez ici des informations sur la politique de Toshiba concernant les softmodems.

Getting the modem to work

Depuis la release 2.7.8 des drivers SmartLink Modem pour linux, le modem est reconnu pour les appels sortants. La version 2.7.10 du driver est stable, ce qui n’est pas le cas de la version 2.7.14 (depuis le 24 Mai 2003).

Comme mentionné plus haut, un driver est en construction. Vous pouvez le trouver chez http://linmodems.technion.ac.il/packages/smartlink/.
Les modules retournent les messages suivants:

    Jan  7 18:55:56 valea kernel: Smart Link AMRMO modem.
    Jan  7 18:55:56 valea kernel: amrmo: probe 8086:2486 Intel Corp. 82801CA/CAM AC'97 Modem : ICH card...
    Jan  7 18:56:59 valea kernel: This driver is not compatible with the installed modem codec.

Le codec ne correspond pas, mais il est possible de démarrer une connexion ppp, i.e. d’appeler votre ISP.

IrDA

IrDA est utilisable. Mais au prix d’une pirouette. Damn Toshiba crap ;)
Les Toshiba Satellite 2410 sont fournis avec une carte SMCS LPC47N227 SuperIO, qui supporte IrDA SIR/FIR. Autant que je sache, cette carte est connectée par un pont PCI-ISA. Le sous-peripherique IrDA du SuperIO chip est reconnu par le LKM smc-ircc. Malheureusement, le BIOS ne configure ni le sous-peripherique IrDA  du SuperIO chip (SIR port, FIR port, dma, irq, IrDA mode, power) ni le pont PCI-ISA afin qu’il décode tous les ports utilisables. Le kernel Linux est ainsi empêche de détecter la seconde UART, rendant impossible l’utilisation en mode SIR. De même, le module FIR smc-ircc peut détecter la carte SuperIO, mais échoue à l’installation, le sous-système IrDA n’étant pas configure.

Solution

Ce problème est bien connu en ce qui concerne les Toshiba plus récents. Pour ajuster les paramètres de la carte IrDA, vous pouvez utiliser Rob Miller's smcinit. Sa solution est faite pour un Toshiba Satellite 5100 mais fonctionne sur les séries 2410. Récupérez la routine d’init depuis sa page, compilez, installez, exécutez. Le module smc-ircc devrait tourner parfaitement.

IrDA-Hardware and LIRC

LIRC est un logiciel qui vous permet de décoder et envoyer des signaux infrarouges correspondant a beaucoup d’appareils de contrôle (mais a pas tous). Je l’utilise pour contrôler MPlayer, XMMS ou faire avancer mes présentations.
La carte SMCS LPC47N227 est reconnu pas le LKM
lirc_sir, que vous devriez avoir compile depuis les sources. Remarque: Il n’est pas possible d’utiliser simultanément IrDA et LIRC. Vous devez arrêter tous les modules relatifs a l’infrarouge avant de lancer lirc_sir. De plus, vous devez initialiser la carte SMSC comme écrit plus haut.
Le module
lirc_sir doit connaître la localisation du port SIR (SIR = Serial InfraRed) du périphérique infrarouge, i.e. port I/O et IRQ. Pour un Satellite 2410 ces valeurs sont: I/O port 0x03f8, IRQ 3. Apres l’installation du package lirc et des LKM, essayez

    # modprobe lirc_sir port io=0x03f8 irq=3

Suivez alors les instructions sur lirc homepage, afin de vérifier votre setup. Si ces paramètres ne fonctionnent pas pour vous (I/O port et IRQ), supprimez le module lirc_sir, faites modprobe du module smc-ircc et récupérez les paramètres depuis syslog, qui doit contenir des lignes comme:

    kernel: found SMC SuperIO Chip (devid=0x5a rev=00 base=0x002e): LPC47N227
    kernel: SMC IrDA Controller found
    kernel:  IrCC version 2.0, firport 0x130, sirport 0x3f8 dma=3, irq=3

Les parameters sont: sirport 0x3f8 dma=3, irq=3.
Pour faire un usage permanent de LIRC, ajoutez les lignes suivantes dans modules.conf:

    pre-install lirc_sir /usr/local/sbin/tosh5100-smcinit
    alias char-major-61 lirc_sir
    options lirc_sir irq=3
 

Si vous utilisez une debian: Faites le dans les règles de Debian: mettez ces lignes dans /etc/modutils/lirc et lancez update-modules.
Si vous vous interrogez sur la première ligne, lisez le paragraphe sur l’IrDA.

SD-Card Slot

A ma connaissance, le contrôleur SD est propriétaire. Il n’y a pas de driver pour Linux. Il fonctionne avec Windows, mais seulement avec des cartes SD et non avec les nouvelles cartes MMC.

Firewire

Firewire devrait fonctionner grâce au module ohci1394. Mais je n’ai pas de périphérique firewire pour le tester.

USB

Le module usb-uhci fait fonctionner l’USB.

PCMCIA

Le module yenta_socket avec ds fait fonctionner PCMCIA.

APM

APM fonctionne parfaitement, sauf si vous utilisez X11 avec les drivers NVidia commerciaux. En effet, le module NVDriver empêche la mise en veille du portable. Il vous faudra stopper X, et décharger le module NVdriver.
Il est en fait possible de faire fonctionner les pilotes commerciaux Nvidia avec APM, mais c’est au prix d’une modification des sources du pilote, et rendre impossible l’utilisation de l’AGP. Cette modification est parfois instable sur d’autres portables.
Avant la compilation, ouvrez
nv.c:

#else
        case PM_RESUME:
        case PM_SUSPEND:
        //    printk("NVRM: avoiding suspend request, don't want to shutdown!!\n");
            return 1;
#endif
        default:
        //    printk("NVRM: received unknown PM event: 0x%x\n", rqst);
            return 1;
    }
    return 0;
}
#endif

Changez simplement les 1 en 0;

#else
        case PM_RESUME:
        case PM_SUSPEND:
        //    printk("NVRM: avoiding suspend request, don't want to shutdown!!\n");
            return 0;
#endif
        default:
        //    printk("NVRM: received unknown PM event: 0x%x\n", rqst);
            return 0;
    }
    return 0;
}
#endif
 

N’oubliez pas de desactiver l’AGP dans votre XF86config-4: Option "NvAGP" "0"!
De même, il n’est pas recommande d’avoir compilé le support AGP dans le kernel si vous utilisez cette astuce.

ACPI

ACPI est reconnu par Toshiba ACPI Extras Driver de John Belmonte's - module toshiba_acpi. Le code source de ce module est inclut dans les kernels en développement actuels. Pour l’utiliser avec un kernel 2.4.x, il vous faut un kernel récent (kernel.org) et appliquer le patch ACPI de John Belmonte que vous trouverez a http://sourceforge.net/projects/acpi/. Appliquez le, et compilez votre noyau. Evitez autant que possible les sources kernel de votre distro : elles contiennent souvent des patches elles mêmes.

Qu’attendre d’ACPI ?

Du fait de la participation de Toshiba (de même que Compaq, Intel, Microsoft et Phoenix) a la publication de la norme ACPI, nous pouvons attendre que le BIOS implémente correctement ces spécifications. Nous pouvons nous féliciter de posséder du matériel de Toshiba quand on connaît le nombre impressionnant d’implémentation foireuses qui circulent.
En ce qui concerne le Satellite 2410-404, des choses agréables comme les additional keys, le réglage de l’éclat de l’écran en 8 étapes out de la sortie vidéo, fonctionnent avec le patch pre-cite. Mais les options de powermanagement de OSPM (Operating System-directed configuration and Power Management) ne font pas grand chose sur mon portable, simplement parce les noyaux 2.4 ne prennent pas en charge les sleep states S2, S3 et S4. OSPM est une partie de ACPI. Je ne dis pas que OSPM power management ne fonctionne pas avec Linux, mais vous devrez prendre un kernel beta ou attendre les noyaux 2.6.

 

Comme j’utilise mon portable tous les jours, j’utilise APM pour la gestion de l’énergie, ainsi que le toshset pour régler l’éclat du moniteur et la sortie vidéo. Cela marche raisonnablement bien.

Additional Keys

Comme dit plus haut, toshiba_acpi les gère. John Belmonte a écrit un outils en python pour les gérer. Prenez le ici.

LAN - Onboard Network

La carte réseau est une EtherExpress PRO/100 VE. Le module eepro100 fera fonctionner cette NIC.

WLAN (internal MiniPCI)

Le Wireless LAN Mini PCI Card (PA3212U-2MPC) est detecte comme PCMCIA device sur le slot 0.

orinoco_cs

Il est supporte par le module orinoco_cs. Vous pouvez utiliser le kernel-pcmcia-drivers ou prendre le dernier PCMCIA-CardServices depuis SourceForge. Des patches existent pour que ce dernierpuisse change votre MAC et supporte le monitor mode. Vous les trouverez a shmoo.com.

wavelan2_cs

Le Wireless LAN Mini PCI est aussi supporte par wavelan2_cs.o. Vous trouverez les drivers chez Agere, et des instructions d’installation detaillee dans le package.
Davyd 'proXy' Madeley m’a envoye la remarque suivante:

[..] J’ai [..] decouvert que l’internal wireless card semble fonctionner mieux sous le driver open source orinoco_cs que sous […] wavelan2_cs.

 

Notes

Jettez donc un coup d’œil dans la files section.
Si vous voulez me contacter pour de l’aide ou des échanges d’information, sentez vous libre de le faire !

Thorsten Haas mail@thorstenhaas.de