Ceci est une ancienne révision du document !
Modèle : Toshiba Satellite U500-119
En un coup d’œil
Le tableau suivant récapitule la prise en charge du matériel de portable par les différentes versions d'Ubuntu. Il utilise les notations suivantes :
Version | Installation | Carte graphique | Son | Wifi | Bluetooth | Webcam | Touchpad | Raccourcis multimédia | Rétroéclairage | Ventilateur |
---|---|---|---|---|---|---|---|---|---|---|
Ubuntu 10.10 | - |
Utilisateurs du Wiki possédant cet ordinateur, fonctionnel :
Cet ordinateur portable n'est pas tatoué.
Problèmes
Luminosité
Lorsque l'on souhaite changer la luminosité de l'écran avec les touches Fn+F6 ou Fn+F7 une barre de niveau semblable à la barre de changement de volume s'affiche à l'écran, mais la luminosité ne change pas.
Le plus simple pour remédier à cela est de créer un démon qui va surveiller dynamiquement les changements apportés au fichier /sys/class/backlight/acpi_video0/brightness
et appeler la commande setpci
pour appliquer les changements.
Création du script
On créé le fichier puis on le rend exécutable.
sudo touch /etc/init.d/backlightd sudo chmod +x /etc/init.d/backlightd sudo gedit /etc/init.d/backlightd
Y copier le contenu suivant:
#!/bin/bash old_b=9; declare -i curr_b=240; declare -i target_b=240; while : ; do b=`cat /sys/class/backlight/acpi_video0/brightness`; delay="0.5" if [ $old_b != $b ]; then old_b=$b let "target_b=$b * 20 + 12" fi hex_b="."; if [ "$curr_b" -lt "$target_b" ] ; then let "curr_b=$curr_b + 2" if [ "$curr_b" -gt "$target_b" ] ; then let "curr_b=$target_b" fi hex_b="-" elif [ "$curr_b" -gt "$target_b" ] ; then let "curr_b=$curr_b - 2" if [ "$curr_b" -lt "$target_b" ] ; then let "curr_b=$target_b" fi hex_b="-" fi if [ $hex_b != "." ] ; then hex_b=`printf "%02X" $curr_b` delay="0.005" setpci -s 00:02.0 F4.B=$hex_b fi sleep $delay done
Lancement au démarrage
Ouvrir le fichier rc.local
sudo gedit /etc/rc.local
Y copier la ligne suivante AVANT la ligne exit 0
nohup /etc/init.d/backlightd &
Au redémarrage la luminosité peut-être réglée par les touches Fn, l'applet Gnome Backlight, et autres.
Ventilateur
Le ventilateur s'arrête dès le chargement d'Ubuntu, et ne se mettra à tourner que quelques secondes lorsque la température du processeur dépassera les 100°C. Ceci peut-être très dangereux pour vos composants. Il est possible de faire tourner le ventilateur en mettant le PC en veille puis en le rallumant. Néanmoins le ventilateur restera tourner à une vive allure et ne s'arrêtera plus, ce qui est très agaçant.
Ce problème vient d'une table DSDT mal conçue dans le BIOS. Celle-ci a été clairement compilée pour les OS Microsoft, en laissant à Linux une table buggée, comme c'est malheureusement trop souvent le cas sur les portables Toshiba. En effet, les méthodes d'activation des ventilateurs renvoient toujours la valeur "1", ce qui fait que Linux va constamment essayer d'arrêter les ventilateurs.
Nous allons corriger cette table DSDT, la recompiler, et l'intégrer à notre noyau (soit par une recompilation de celui-ci, soit en la chargeant dans le initrd).
Table DSDT
Corriger la table
Installer Intel DSDT Compiler
sudo apt-get install iasl
Copier le DSDT actuel dans un fichier du dossier actuel
sudo cat /proc/acpi/dsdt > dsdt.dat
Désassembler la table
iasl -d dsdt.dat
Ouvrir le fichier créé
gedit dsdt.dat
Trouvez à présent les occurrences suivantes dans votre fichier (utilisez la recherche) :
PowerResource (PF0, 0x00, 0x0000) PowerResource (PF1, 0x00, 0x0000) ...etc...
Vous devriez trouver 5 occurrences en principe.
Remplacer Lor par And dans chaque champ Method
situé après PowerResource
. Puis sauvegardez.
Recompiler la table
Taper la commande
iasl -tc dsdt.dsl
Vous ne devriez à priori pas voir d'Erreurs, si quelques Warning subsistent ce n'est pas important.
La compilation a créé un fichier dsdt.hex
dans votre dossier courant. Nous allons en avoir grand besoin pour la suite.
Recompiler son noyau
Les versions antérieures à Jaunty (9.04) permettaient de charger une table DSDT modifiée directement dans le initrd. Ce n'est plus possible depuis Karmic (9.10) pour les raisons évoquées ici. Il va donc falloir se retrousser les manches et l'intégrer directement dans un noyau.
(suite du tuto à venir)
Voir aussi
- How to fix a buggy DSDT file (en) ;
- Recompilation du noyau sous Maverik (en) :
Contributeurs : tOnI0