Aujourd’hui, je fais un peu un article aide-mémoire pour me faciliter les réinstallations futures de mon laptop parce qu’à chaque fois que je change de distro ou que je le réinstalle1, je me retrouve à taper les mêmes recherches pour gérer les petits quircks de cet engin.
Quand j’y met une batterie externe 68+ (au lieu de la 68 d’origine), le CPU se bloque à 400Mhz max.
C’est apparemment un bug connu, mais non corrigé dans le BIOS. Il a été corrigé en 2020 pour une autre configuration de batteries que la mienne. Heureusement, en créant un service systemd on peut lancer la commande qui désactive la feature buguée et permet de retrouver un usage normal.
Merci Dominique et son blog Geek du Grenier qui a déjà résumé les infos et dont je vais un peu simplifier la solution.
En premier lieu, il faut avoir le paquet msr-tools et faire un petit script qui va lire puis modifier une valeur dans un registre du CPU :
#!/usr/bin/env bash
set -e
# Quand BD PROCHOT est actif, la valeur du registre est impaire
# donc pour le désactiver on se contente de soustraire 1
MSR_POWER_CTL_ADDR=0x1FC
MSR_POWER_CTL_CURRENT=$(/usr/sbin/rdmsr --unsigned $MSR_POWER_CTL_ADDR)
MSR_POWER_CTL_NEW=$(expr ${MSR_POWER_CTL_CURRENT} - 1)
# On vérifie qu'on défini bien une valeur paire
# ça évite de pouvoir lancer le script plusieurs fois
# avec des effets inattendus.
if [ $((MSR_POWER_CTL_NEW%2)) -eq 0 ];
then
/usr/sbin/wrmsr --all $MSR_POWER_CTL_ADDR $MSR_POWER_CTL_NEW;
else
echo 'Current register value is already even, maybe BD PROCHOT has already been disabled ?';
exit 1;
fi
Et ensuite, on fait un service systemd (Certains prétendent qu’on peut le mettre dans /usr/local/lib/systemd/system/ mais ça fonctionne pas, il faut le mettre à l’endroit classique : dans /etc/systemd/system)
[Unit]
Description=Contourne le bug du CPU bloqué à 400Mhz à cause de la grosse batterie
After=local-fs.target
[Service]
Type=oneshot
ExecStart=/usr/local/bin/disable-prochot.sh
[Install]
WantedBy=basic.target
Bref, un coup de systemctl daemon-reload && systemctl enable --now disable-prochot.service et on en parle plus.
Désactiver l’écran tactile
Je me sers jamais de l’écran tactile de mon PC et ça me gène à chaque fois que je pointe un truc du doigt ou que je pousse un poil de chat qui s’est fichu au mauvais endroit. Bref, je le désactive tout le temps.
Pour que ce soit permanent, il faut ajouter un fichier .rules dans /etc/udev/rules.d/ avec les bonnes infos.
Ces infos, on les récupère avec grep -iC 4 touchscreen -- /proc/bus/input/devices et on note les champs Vendor et Product. Ensuite le contenu du fichier ressemble à ça :
SUBSYSTEM=="usb", ATTRS{idVendor}=="04f3", ATTRS{idProduct}=="2374", ATTR{authorized}="0"
Pour appliquer les changements, on reboot ou on applique les règles avec udevadm
# udevadm control --reload-rules && udevadm trigger
Conclusion
Et voilà, maintenant le petit laptop n’a plus son CPU qui se bloque, ni son touchscreen inutile. Peut-être que si je pense à d’autres choses au fil de l’eau, j’éditerai cet article.

Laisser un commentaire