Traductions de cette page:

Howto : Installation et configuration de Linux sur un portable HP nc4400 (06/2007)

Présentation du matériel

PC portables HP nc4400 équipés de :

  • Ecran : 12,1“ XGA (1024 x 768 pixels)
  • Processeur : Intel Core 2 Duo T7200 (2Ghz)
  • Mémoire : DDR2-SDRAM 2Go
  • Chipset : Intel 945GM Express
  • Graphique : Intel Mobile 945GM/GMS/940GML (224Mo max partagée)
  • Disque : SATA 100Go 5400 tpm
  • Audio : Intel Corporation 82801G (ICH7 Family)
  • Cardbus (PCMCIA) : Texas Instruments PCIxx12
  • Lecteur de cartes multimédia : Texas Instruments 5-in-1 Multimedia Card Reader
  • Ethernet : Broadcom Corporation NetXtreme BCM5753M Gigabit
  • WiFi : Broadcom Corporation BCM4311
  • Station d'accueil : HP Docking station 1.1

Distributions Linux testées

  • Debian testing - kernel 2.6.20
  • Ubuntu feisty 7.04 - kernel 2.6.20

Problèmes rencontrés

Conflit BIOS/psmouse

La présence du module psmouse au moment de l'extinction (ou du redémarrage, ou de l'hibernation) provoque un redémarrage lent (Le logo HP reste affiché plus longtemps, le boot de Linux est bien plus lent, le clavier peut être bloqué et l'ACPI peut détecter des températures totalement fantaisistes). Il est donc important de décharger ce module avant chaque extinction ou reboot.

Pour automatiser le déchargement de ce module, il suffit de créer un fichier /etc/rc0.d/K10rmmodpsmouse contenant ceci :

echo Stopping psmouse
/sbin/rmmod psmouse

Ce script sera donc exécuté au moment de l'extinction (runlevel 0) à condition de l'avoir rendu exécutable. Il faut donc activer ce fichier aussi dans le cas d'un redémarrage (runlevel 6) :

chmod 755 /etc/rc0.d/K10rmmodpsmouse
ln -s /etc/rc0.d/K10rmmodpsmouse /etc/rc6.d/

Configuration WiFi

Configuration du driver Ndiswrapper

Pour utiliser la carte WiFi avec le driver fournit pour Windows, il faut configurer Ndiswrapper. Tout d'abord, il est nécessaire d'installer le paquet ndiswrapper-utils-1.9 par un apt-get install ndiswrapper-utils-1.9. Puis il faut localiser le fichier bcmwm5.inf utilisé par Windows. Pour un portable fraîchement installé, il suffit de vous rendre dans le répertoire SwSetup/WLAN de votre installation de Windows. Il est donc nécessaire que la partition dans laquelle Windows est installé soit montée dans votre arborescence Linux.

cd <chemin disque windows>/SwSetup/WLAN

La prochaine étape est d'enregistrer le driver Windows dans Ndiswrapper. Pour exécuter la commande suivante, vous devez être identifié en tant que root.

ndiswrapper -i bcmwl5.inf

Vous pouvez vérifier que tout s'est bien déroulé en tapant :

ndiswrapper -l

Vous devez alors obtenir l'affichage suivant :

installed drivers:
bcmwl5          driver installed, hardware (14E4:4324) present (alternate driver: bcm43xx)

Le driver étant correctement enregistré, il reste à le charger automatiquement à chaque démarrage. Pour cela il faut modifier le fichier /etc/modules et y rajouter la ligne :

ndiswrapper

Le module ndiswrapper est incompatible avec le module bcm43xx qui est chargé automatiquement à chaque démarrage. Pour empêcher son chargement, vous devrez éditer le fichier /etc/modprobe.d/blacklist et y rajouter la ligne suivant :

blacklist bcm43xx

Redémarrer l'ordinateur pour avoir les bons modules associés chargés. Si tout a bien fonctionné, en tapant lsmod vous devriez trouver une ligne indiquant que le module ndiswrapper est bien chargé.

...
ndiswrapper           166388  0
...

Pour vérifier que l'interface réseau correspondant à la carte WiFi (ici wlan0) existe bien, vous devez taper la commande /sbin/iwconfig dans une console et obtenir le résultat suivant :

lo        no wireless extensions.

eth0      no wireless extensions.

wlan0     IEEE 802.11g  ESSID:off/any
          Mode:Managed  Frequency:2.442 GHz  Access Point: Not-Associated
          Bit Rate=54 Mb/s   Tx-Power:32 dBm
          RTS thr=2347 B   Fragment thr=2346 B
          Power Management:off
          Link Quality:0  Signal level:0  Noise level:0
          Rx invalid nwid:0  Rx invalid crypt:0  Rx invalid frag:0
          Tx excessive retries:0  Invalid misc:0   Missed beacon:0

Si vous êtes arrivés ici, il ne reste plus qu'à tenter de vous connecter sur un réseau WiFi :-)

Connexion à un réseau WiFi avec Network-Manager

Il existe un grand nombre de façons de se connecter à un réseau WiFi dont la plus sûre pour debogger est surement la célèbre à la mano ! Ici je vais décrire l'installation de l'applet KDE KNetworkManager (il existe l'équivalent pour Gnome) utilisant le démon NetworkManager pour se connecter aux différents réseaux (WiFi ou filaires).

Sur une Debian testing, vous pouvez installer knetworkmanager grâce à la commande : apt-get install network-manager-kde (sous Ubuntu le packet se nomme knetworkmanager).

Pour utiliser knetworkmanager en tant qu'utilisateur, celui-ci doit être dans le groupe netdev :

adduser username netdev
/etc/init.d/dbus reload

Sous KDE, vous pouvez lancer knetworkmanager, soit par les menus soit en tapant directement dans une console knetworkmanager &. Il vous restera par la suite à automatiser son chargement au démarrage de KDE en plaçant un lien sur l'exécutable dans le répertoire ~/.kde/Autostart.

Grâce à cette applet, vous devez déjà pouvoir vous connecter sur le réseau filaire, mais il arrive que la connexion WiFi ne marche pas sur certains réseau, notamment celui du département info :-x. Cela provient du fait qu'aucun mode n'est pas sélectionné sur la carte WiFi, ce qui gène la connexion sur certaines bornes. Pour forcer la sélection d'un mode, il suffit de taper en tant que root /sbin/iwconfig wlan0 mode auto. Mais il faut le faire à chaque fois que la carte WiFi est détectée ce qui devient vite pénible. Pour automatiser cette action, il suffit de créer un fichier wpainit contenant le code suivant :

#!/bin/sh
# Appel de 'iwconfig wlan0 mode auto' avant l'appel de wpa_supplicant

# On quitte si l'interface activée est loopback
if [ "$IFACE" = lo ]; then
        exit 0
fi

# On quitte si l'interface activée est eth0
if [ "$IFACE" = eth0 ]; then
        exit 0
fi

# Permet de récupérer l'interface activée (WPA_IFACE) de plusieurs manières :
# - soit classique avec IFACE
# - soit avec IF_WPA_IFACE si une ligne wpa-iface a été spécifiée dans /etc/network/interfaces
if [ -n "$IF_WPA_IFACE" ]; then
        WPA_IFACE="$IF_WPA_IFACE"
else
        WPA_IFACE="$IFACE"
fi

/sbin/iwconfig $WPA_IFACE mode auto

exit 0

Il faut ensuite le rendre exécutable en tapant chmod +x wpainit, puis de le déplacer en tant que root dans le répertoire /etc/network/if-pre-up.d/.

NetworkManager (par le biais de NetworkManagerDispatcher) se chargera de lancer tous les scripts se trouvant dans /etc/network/if-pre-up.d/ avant que n'importe quelle interface réseau n'apparaisse. NetworkManager lancera les scripts en suivant l'ordre alphabétique. Or, il faut absolument que notre script soit lancé avant wpasupplicant (dans le même répertoire), il est donc important de vérifier que le nom donné à notre script le place bien avant wpasupplicant.

ACPI : Gestion du processeur

L'utilisation de ces instructions demande une mise à jour du BIOS qui doit être en version F07. L'ajustement de la fréquence peut être faite directement au niveau du noyau ou par un démon en userspace. Différents démons peuvent être utilisés pour cela, du simple powernowd au plus sophistiqué powersaved qui est capable de faire bien d'autres choses, et qui gère des profils différents selon le niveau de la batterie ou la présence de l'adaptateur secteur. Pour utiliser ce dernier et configurer l'ajustement de la fréquence, éditer le fichier /etc/powersave/cpufreq et s'assurer de la présence des lignes suivantes :

CPUFREQ_ENABLED="yes"
CPUFREQD_MODULE="acpi-cpufreq"

Par défaut, powersaved utilise l'ajustement de fréquence du noyau, ce qui est habituellement suffisant. Les différents profils peuvent alors être configurés en éditant les fichiers /etc/powersave/scheme_* ou en utilisant kpowersave, une petite applet KDE qui permet aussi de mettre en veille en RAM ou sur disque. Des outils en ligne de commande ainsi que l'applet KDE permettent d'interagir avec le démon, pour changer de profil de performance par exemple. Pour utiliser ces outils en tant qu'utilisateur de nom username, cet utilisateur doit être dans le groupe powerdev :

adduser username powerdev
/etc/init.d/dbus reload

Avec le BIOS version F05, et même avec un noyau récent tel que le 2.6.20, le speedstep n'est pas pris en compte, et un modprobe speedstep-centrino provoque un Device or resource busy. Un chargement du module acpi-cpufreq (qui devrait remplacer sous peu le module speedstep) provoque la même erreur ou un ralentissement de la machine. Le seul moyen de diminuer la consommation du processeur est donc d'utiliser le module p4-clockmod qui prend en compte l'ajustement de la fréquence mais pas l'ajustement du voltage, ce qui provoque un avertissement lors du chargement du module (Warning: EST-capable CPU detected. The acpi-cpufreq module offers voltage scaling in addition of frequency scaling). L'autonomie de la machine est alors nettement moins bonne.

Lecteur MMC/SD (testé avec carte SD)

Après divers essais infructueux, voici une configuration qui semble fonctionner sur Ubuntu 7.04 “feisty”.

# /sbin/modprobe mmc_block
# /sbin/modprobe tifm_core
# /sbin/modprobe tifm_7xx1
# lsmod |grep tifm
tifm_sd                11528  0 
mmc_core               27652  2 mmc_block,tifm_sd
tifm_7xx1               8960  0 
tifm_core               9856  2 tifm_sd,tifm_7xx1

L'insertion de ma carte SD de test (16Mo) est détectée par le module :

tifm_7xx1: sd card detected in socket 1
mmcblk0: mmc1:1511 SD016 14560KiB 
mmcblk0: p1

… et gnome-volume-manager la prend en charge et l'automonte :

# mount |grep mmcblk0
/dev/mmcblk0p1 on /media/disk type vfat

Au cas où, voici un dump des registres de configuration de ce(s) périphérique(s) PCI sur mon portable :

# lspci -s 02:06 -x
02:06.0 CardBus bridge: Texas Instruments PCIxx12 Cardbus Controller
00: 4c 10 39 80 07 00 10 02 00 00 07 06 20 a8 82 00
10: 00 00 20 f4 a0 00 00 02 02 03 06 b0 00 00 00 80
20: 00 f0 ff 83 00 00 00 84 00 f0 ff 87 00 50 00 00
30: fc 50 00 00 00 54 00 00 fc 54 00 00 0b 01 c0 05
40: 3c 10 b1 30 01 00 00 00 00 00 00 00 00 00 00 00
50: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
60: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
70: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

02:06.2 Mass storage controller: Texas Instruments 5-in-1 Multimedia Card Reader (SD/MMC/MS/MS PRO/xD)
00: 4c 10 3b 80 06 00 10 02 00 00 80 01 10 40 80 00
10: 00 80 20 f4 00 00 00 00 00 00 00 00 00 00 00 00
20: 00 00 00 00 00 00 00 00 00 00 00 00 3c 10 b1 30
30: 00 00 00 00 44 00 00 00 00 00 00 00 0b 01 07 04

02:06.3 Generic system peripheral [0805]: Texas Instruments PCIxx12 SDA Standard Compliant SD Host Controller
00: 4c 10 3c 80 06 00 10 02 00 00 05 08 10 40 80 00
10: 00 90 20 f4 00 00 00 00 00 00 00 00 00 00 00 00
20: 00 00 00 00 00 00 00 00 00 00 00 00 3c 10 b1 30
30: 00 00 00 00 80 00 00 00 00 00 00 00 0b 03 07 04

02:06.4 Communication controller: Texas Instruments PCIxx12 GemCore based SmartCard controller
00: 4c 10 3d 80 02 00 10 02 00 00 80 07 00 00 80 00
10: 00 a0 20 f4 00 b0 20 f4 00 00 00 00 00 00 00 00
20: 00 00 00 00 00 00 00 00 00 00 00 00 3c 10 b1 30
30: 00 00 00 00 44 00 00 00 00 00 00 00 0b 01 00 00

Heure incorrectement récupérée

Avec la dernière version du BIOS (F07), les scripts de démarrage ne peuvent pas récupérer correctement l'heure depuis le BIOS. Symptôme : un appel à hwclock provoque une erreur select() to /dev/rtc to wait for clock tick timed out, et l'heure, donnée par exemple par la commande date est fausse. Pour corriger le problème, il faut demander à hwclock, quand il est appelé dans les scripts de démarrage (pour initialiser l'heure du système) et d'extinction (pour envoyer au BIOS l'heure actuelle), d'utiliser une option spéciale. Pour cela, éditer /etc/init.d/hwclock.sh et rajouter l'option correspondante aux paramètres :

HWCLOCKPARS=--directisa

Vidéo double affichage

FIXME

ACPI : Hibernation / Veille

FIXME

Vous pourriez laisser un commentaire si vous étiez connecté.
aide/linux-nc4400.txt · Dernière modification: 18/03/2009 11:16 par admin
CC Attribution-Noncommercial-Share Alike 4.0 International
Driven by DokuWiki Recent changes RSS feed Valid CSS Valid XHTML 1.0